John W. Colby
jcolby at ColbyConsulting.com
Mon Mar 17 16:10:08 CST 2003
Yes, the method has to be declared static, and then it doesn't have to be
instantiated. I'm stretching on this however since I am very new to this.
However I have seen this mentioned in my book. So you can't just use any
and all methods apparently, even with the framework classes. Some are
static some aren't. It appears that some simply don't make sense to use
without instantiation, for example if it's a variable class, and you are
going to call the method that formats that variable to a string, it makes no
sense unless the variable has some value.
John W. Colby
Colby Consulting
www.ColbyConsulting.com
-----Original Message-----
From: dba-vb-admin at databaseadvisors.com
[mailto:dba-vb-admin at databaseadvisors.com]On Behalf Of Joe Rojas
Sent: Monday, March 17, 2003 4:37 PM
To: 'dba-vb at databaseadvisors.com'
Subject: RE: [dba-VB] VB.Net stuff
In Java you don't have to instantiate a class in order to use it's methods.
Do you get this functionality in VB.Net?
For example, the Character class in Java does not have to be instantiated in
order to use it methods.
Instead of this:
Character myChar = new Character("a");
myChar.isDigit("a");
You could just do:
Character.isDigit("a");
-----Original Message-----
From: John W. Colby [mailto:jcolby at colbyconsulting.com]
Sent: Monday, March 17, 2003 3:36 PM
To: dba-vb at databaseadvisors.com
Subject: RE: [dba-VB] VB.Net stuff
Boy would I agree with THAT. It is much more of a pain to
learn exactly because of the new inheritance stuff. But the key here is
that the .net framework is a prewritten set of classes and class trees that
expose a TON of functionality that is just waiting to be used. According to
the "sales pitch" stuff the compilers are actually a thin layer over the
.net framework. Only the truly language specific keywords are in the
compiler. Everything else is a class.
Even VARIABLES are classes, complete with methods and stuff.
Weird! But once you start to understand it it all starts making sense and
becomes extremely powerful. Because the variables are classes (strings,
longs, singles etc) they are all expressed and used identically from
language to language. No more page faults because you tried to pass the
wrong thing to something originally written in C. C is using exactly the
same class for a string as you are in VB as the next guy is in J etc. This
really does free up the dev TEAM to use whatever they prefer rather than
have it dictated to them by management.
John W. Colby
Colby Consulting
www.ColbyConsulting.com
-----Original Message-----
From: dba-vb-admin at databaseadvisors.com
[mailto:dba-vb-admin at databaseadvisors.com]On Behalf Of Jim
DeMarco
Sent: Monday, March 17, 2003 1:30 PM
To: dba-vb at databaseadvisors.com
Subject: RE: [dba-VB] VB.Net stuff
Great observation Joe and pretty true. That was my first
take too (Java-like) although as powerful as .NET is it is more complicated
than good ole VB6 (maybe complex is a better word for it). I consider VB 6
an easy to use and easy to learn language and development environment. I
think M$ complicated it a bit especially where OOP is concerned. Yes, it
has all the things a developer who uses object oriented techniques wants but
I think it might make it a bit complicated for a newbie or junior developer.
Not to say it's not a great tool. The IDE is great and it
really is a powerful tool not to mention the server explorer and
datasets/datatables as John mentioned. It just seems somewhat harder to
learn than classic VB.
Jim DeMarco
Director of Product Development
HealthSource/Hudson Health Plan
-----Original Message-----
From: Joe Rojas [mailto:JRojas at tnco-inc.com]
Sent: Monday, March 17, 2003 1:23 PM
To: 'dba-vb at databaseadvisors.com'
Subject: RE: [dba-VB] VB.Net stuff
John,
Looking at the couple of coding examples that you have
posted, both here and
on the AccessD list, I keep getting this feeling that I am
reading Java
code. :-)
A lot of the keywords, and their uses, look exactly the same
as Java and I
would assume that they work the same too. This sounds
promising for the .Net
platform because Java is very cool, IMO!
Your excitement towards VB.Net reminds me of how I felt when
I started
learning Java. My ignorance of the whole .Net stuff made me
skeptical about
it, but it sounds like it is worth a look!
I really enjoy your updates that you post as you learn
VB.Net, I find them
very useful!
-Joe
-----Original Message-----
From: John W. Colby
[mailto:jcolby at colbyconsulting.com]
Sent: Saturday, March 15, 2003 9:24 AM
To: dba-vb at databaseadvisors.com
Subject: RE: [dba-VB] VB.Net stuff
Jim,
I am reading Programming Visual Basic .Net
by Francesco
Balena - ISBN 0-7356-1375-3. Given that it is the only book
on the subject
I have I can't compare it to anything but it has done a good
job of
explaining the basics so far. It does assume that you are a
VB6 programmer
(which I am not) and know that pretty well, so if you have
no VB experience
it might be an even steeper learning curve. OTOH, so much
has changed from
VB (apparently) that I am not even sure how important it is
to know that
stuff. Apparently the dev environment is completely
different, the language
now has true implementation inheritance (inherits the
functionality and
interface instead of just the interface) and is really just
a thin layer
over the .Net framework of a few thousand classes and
interfaces.
Implements is a keyword that tells the
compiler that you are
implementing an interface. Interfaces are still useful in
cases where the
actual implementation is so specific to what you are doing
that trying to
inherit code wouldn't be helpful, yet you still want to
define a standard
interface so everyone does things the same way. IEnumerable
is an interface
for enumeration, which of course is the process of
enumerating a set of
objects, handing back one object every time you are called.
The hard disk
makes a good example, the class initializes, starts to read
the dir
structure and file names. Each time the class is called, it
finds the next
directory / file and hands back some property or property (a
string in this
case with the name of the file). The class keeps track of
where it is in
the disk structure so that the next time it is called it
knows where to go
(into subdirectories for example) to get the next file
property.
.Net the framework is a truly awesome
collection of classes
that wrap the entire windows API, as well as classes which
build up other
useful functionality. There are collection classes, which
are subclassed to
make stacks and queues. Need a stack? It's in there. Need
a stack that
does something special? Inherit it and implement your own
custom
functionality.
There are classes for encryption, literally
perhaps 50 lines
of code to open a file (a class), feed the text stream to
the encryption
class, feed the encryption stream to a class that transmits
the stream out
over the internet.
Let's not pretend that I have any idea how
to do this yet,
but I know that these classes exist. and with true
inheritance, tweaking
existing stuff to do what you need has to be a bajillion
times faster that
writing it yourself from the ground up.
Of course you have to learn the namespaces
and where all
this stuff is, as well as how to use the individual classes
once you know
where they are.
John W. Colby
Colby Consulting
www.ColbyConsulting.com
-----Original Message-----
From: dba-vb-admin at databaseadvisors.com
[mailto:dba-vb-admin at databaseadvisors.com]On
Behalf Of Jim
Lawrence
(AccessD)
Sent: Saturday, March 15, 2003 2:23 AM
To: dba-vb at databaseadvisors.com
Subject: RE: [dba-VB] VB.Net stuff
Hi John:
Looks like awesome stuff. I have been
wandering around the
side of the .net
pool for a while and will eventually have to
jump in...but
learning this
coding will be like climbing 3000 vertical
feet with two
pack-sacks on. What
is a 'Implements IEnumerable' anyway?
Modules? Classes and
internal
sub-classes with functions and subroutines
floating around?
This looks like
something that will take more than an
evening to master. 8-/
I bet there is
no books that will read 'Master .Net in 24
hours'.
Nothing like a good challenge...:-) Any
recommendations for
a good book to
start?
Jim
-----Original Message-----
From: dba-vb-admin at databaseadvisors.com
[mailto:dba-vb-admin at databaseadvisors.com]On
Behalf Of John
W. Colby
Sent: Friday, March 14, 2003 5:41 PM
To: AccessD
Cc: VbAdmin; VBA
Subject: [dba-VB] VB.Net stuff
I thought you folks might be interested in
looking at some
of the features
that .net exposes. The following is a class
directly from
"Programming
VB.net" by Francesco Balena. It is
fascinating (to me
anyway) as it clearly
displays the usage of a whole slew of
functionality built in
to the .net
environment. It was really an exercise in
demonstrating the
ability to add
enumerators to any class (where appropriate)
so that people
using your class
could use "for each" constructs with your
classes.
This class iterates a disk path and returns
the file name of
each file or
directory in turn. Please let's not get in
to a "it could
have been so much
simpler". I have no idea whether that is
true, and really
don't much care.
In fact I don't even understand all that is
happening here!
I am simply
showing the code so that anyone who is
interested can see
how the author
uses built in classes such as IEnumerator,
and the built in
stack class of
the Systems.Collection namespace. Seriously
cool built in
functionality
ready to be built upon.
I built a wrapper function:
Module Module1
Function TestGetEnumerator(ByVal strRoot
As String) As
String
Dim f As System.IO.FileInfo
Dim str As String
'enumerate all files in strRoot
directory tree
For Each f In New FileTree(strRoot)
str = str & f.FullName & vbCrLf
Next
TestGetEnumerator = str
End Function
End Module
Which I then used in the OnOpen event of a
form to return a
string of all
the files and directories in a given path
(hard coded),
which I then place
into a text box on a form. What I want to
do is have the
function be the
datasource for a combo or list but I
couldn't figure that
out and needed to
move on. ;-)
The result is an EXE which I could mail to
you which opens
the form and
displays the file names. Of course I can
just as easily use
the file name
to do some processing on that file, likewise
the class could
be modified to
return any of the file attributes - size,
created date etc.
The EXE is ~10k but of course requires that
you have the
.net environment on
your computer. Anyone that uses the Windows
Update feature
to keep their
system up to date with all of the latest
patches has
probably been offered
the ability to download and install the .net
environment
needed to run my
10k exe.
Anyway, the class is as follows - all
copyrights belong to
their owners, not
me.
Public Class FileTree
Implements IEnumerable
'The search Path
Public ReadOnly DirPath As String
'The constructor
Sub New(ByVal DirPath As String)
Me.DirPath = DirPath
End Sub
'Return an enumeraable object(an
instance of the inner
class)
Function GetEnumerator() As IEnumerator
_
Implements IEnumerable.GetEnumerator
Return New
FileTreeEnumerator(DirPath)
End Function
'The IEnumerator private object
Class FileTreeEnumerator
Implements IEnumerator
Dim DirPath As String
'This variable contains the
Enumerator object for
the file list
'in the dir being scanned
Dim FileEnumerator As IEnumerator
'This variable contains the stack of
the Enumerator
objects
'for subdirs of all pending
directories
Dim DirEnumerators As New
System.Collections.Stack()
'a simple constructor
Sub New(ByVal DirPath As String)
'Save the dir path
Me.DirPath = DirPath
'manually call the reset method
Reset()
End Sub
Sub Reset() Implements
IEnumerator.Reset
'The dir object that represents
the root object
Dim di As New
System.IO.DirectoryInfo(DirPath)
'get the Enumerator object for
the file list,
and reset it
FileEnumerator =
di.GetFiles.GetEnumerator
FileEnumerator.Reset()
'get the enumerator object for
the subdirectory
list
Dim dirEnum As IEnumerator =
di.GetDirectories.GetEnumerator
dirEnum.Reset()
'push it onto the stack
DirEnumerators.Push(dirEnum)
End Sub
Function MoveNext() As Boolean
Implements
IEnumerator.MoveNext
'simply delegate to the file
enumerator object
If FileEnumerator.MoveNext Then
'it returned true so we can
exit
Return True
End If
'if there are no files in the
current directory,
check
'for another subdirectory in the
cuurrent
directory
Dim dirEnum As IEnumerator = _
CType(DirEnumerators.Peek,
IEnumerator)
'check whether current
subdirectory enumerator
has more items
Do Until dirEnum.MoveNext
'There are no more
subdirectories on this
level
'so we must pop another
element of the stack
DirEnumerators.Pop()
If DirEnumerators.Count = 0
Then
'return false if no more
subdirectories
to scan
Return False
End If
'get the current enumerator
dirEnum =
CType(DirEnumerators.Peek,
IEnumerator)
Loop
'We can create a DirectoryInfo.
Dim di As
System.IO.DirectoryInfo = _
CType(dirEnum.Current,
System.IO.DirectoryInfo)
'Store the file enumerator and
reset it
FileEnumerator =
di.GetFiles.GetEnumerator
FileEnumerator.Reset()
'Get the enumerator for the
subdir list
'and reset it
dirEnum =
di.GetDirectories.GetEnumerator
dirEnum.Reset()
'push it onto the stack
DirEnumerators.Push(dirEnum)
'recursive call to process the
file enumerator
Return Me.MoveNext
End Function
'The current property simply
delegates to
FileEnumerator.Current
ReadOnly Property Current() As
Object Implements
IEnumerator.Current
Get
Return
FileEnumerator.Current
End Get
End Property
End Class
End Class
John W. Colby
Colby Consulting
www.ColbyConsulting.com
----------------------------------------------------
Is email taking over your day? Manage your
time with
eMailBoss.
Try it free! http://www.eMailBoss.com
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com
----------------------------------------------------
Is email taking over your day? Manage your
time with
eMailBoss.
Try it free! http://www.eMailBoss.com
This electronic transmission is strictly confidential to
TNCO, Inc. and
intended solely for the addressee. It may contain
information which is
covered by legal, professional, or other privileges. If you
are not the
intended addressee, or someone authorized by the intended
addressee to
receive transmissions on behalf of the addressee, you must
not retain,
disclose in any form, copy, or take any action in reliance
on this
transmission. If you have received this transmission in
error, please notify
the sender as soon as possible and destroy this message.
While TNCO, Inc.
uses virus protection, the recipient should check this email
and any
attachments for the presence of viruses. TNCO, Inc. accepts
no liability for
any damage caused by any virus transmitted by this email.
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com
****************************************************************************
*******
"This electronic message is intended to be for the use only
of the named recipient, and may contain information from HealthSource/Hudson
Health Plan (HS/HHP) that is confidential or privileged. If you are not the
intended recipient, you are hereby notified that any disclosure, copying,
distribution or use of the contents of this message is strictly prohibited.
If you have received this message in error or are not the named recipient,
please notify us immediately, either by contacting the sender at the
electronic mail address noted above or calling HS/HHP at (914) 631-1611. If
you are not the intended recipient, please do not forward this email to
anyone, and delete and destroy all copies of this message. Thank You".
****************************************************************************
*******
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com
----------------------------------------------------
Is email taking over your day? Manage your time with
eMailBoss.
Try it free! http://www.eMailBoss.com
----------------------------------------------------
Is email taking over your day? Manage your time with
eMailBoss.
Try it free! http://www.eMailBoss.com
This electronic transmission is strictly confidential to TNCO, Inc. and
intended solely for the addressee. It may contain information which is
covered by legal, professional, or other privileges. If you are not the
intended addressee, or someone authorized by the intended addressee to
receive transmissions on behalf of the addressee, you must not retain,
disclose in any form, copy, or take any action in reliance on this
transmission. If you have received this transmission in error, please notify
the sender as soon as possible and destroy this message. While TNCO, Inc.
uses virus protection, the recipient should check this email and any
attachments for the presence of viruses. TNCO, Inc. accepts no liability for
any damage caused by any virus transmitted by this email.
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com
----------------------------------------------------
Is email taking over your day? Manage your time with eMailBoss.
Try it free! http://www.eMailBoss.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 10792 bytes
Desc: not available
URL: <http://databaseadvisors.com/pipermail/dba-vb/attachments/20030317/6d336c4e/attachment-0003.bin>