First an apology for asking what are probably lamer questions.
Second, some backround... I am attempting to learn object orientated
programming. I used to write programs in things you guys will probably not
like, such as Turbo Pascal. (In fact, I learned to program when I was 10 on
a PDP 11/70 running Oregon Pascal II) ...and...
I co-wrote a BBS program in my youth. As part of the retrobbs "thing" I
want to bring it back as a telnet system with multi-user chat, and stuff...
...which brings me to my problem. I was going to do this in freepascal, but
a character named Wayne Conrad (who is an old time friend of mine and helped
much with the old software) talked me into doing it in Ruby. Great.
I like Ruby. The idea seems really cool. I just DON'T UNDERSTAND IT! I've
read the book. I can't wait for the movie. Anyway... I wrote a little bit
of code to read and write a user object to disk, verify passwords and such.
It works... but I had to use a Global Varible to make it work. That MUST be
wrong. I want the whole user thing to be encapsulated so that it gets
queried by the rest of the program.. but the rest of the program doesn't
know / care what the object is doing. Every time I try to make it do this,
the sky falls on me. Here is my sample code, how can I fix it to do what I
want?? I've been messing about with this for quite a while... with no luck.
Thanks!!
Mark Firestone
http://www.retrobbs.org
class User
def initialize(name,phone,citystate,address,password)
@deleted = FALSE
@locked = TRUE
@name = name
@alais = ''
@alaisOn = FALSE
@phone = phone
@citystate = citystate
@address = address
@password = password
@width = 80
end
def name
@name
end
def password
@password
end
def show
print "User: #@name #@phone #@citystate #@address #@password\n"
end
end
class User_list
include Enumerable
def initialize
@users = Array.new
end
def append(aUser)
@users.push(aUser)
self
end
def [](key)
if key.kind_of?(Integer)
result = @users[key]
else
result = @users.find { |user| key == user.name }
end
return result
end
end #of Class User_list
def loadusers
File.open("users.dat") do |f|
$list = Marshal.load(f)
print "- Loading User Object...\n"
end
end
def saveusers
File.open("users.dat", "w+") do |f|
Marshal.dump($list, f)
end
print "- Saving User Object...\n"
end
def checkpassword (username,password)
result = FALSE
if $list[username] != nil
if $list[username].password == password
result = TRUE
end
else
print "You passed me a bad user -- ass-munch!\n"
end
return result
end
$list = User_list.new
#$list.append(User.new('SYSOP','000-000-0000','Tempe, AZ','600 E. Solana
Drive','STUPID'))
#$list.append(User.new('TEST','000-000-0000','Mesa, AZ','123 Sample
Street','HAPPY'))
loadusers
$list[0].show
$list[1].show
if $list['TEST'] != nil
$list['TEST'].show
end
print checkpassword('SYSOP','STUPID')
print checkpassword('SYSOP2','PASSWORD')
saveusers
NOTICE: This e-mail and any attachment(s) may contain confidential and
proprietary information of Goss International Corporation and/or its
subsidiaries and may be legally privileged. This e-mail is intended solely
for the addressee. If you are not the addressee, dissemination, copying or
other use of this e-mail or any of its content is strictly prohibited and
may be unlawful. If you are not the intended recipient please inform the
sender immediately and destroy the e-mail and any copies. All liability for
viruses is excluded to the fullest extent permitted by law. Any views
expressed in this message are those of the individual sender. No contract
may be construed by this e-mail.