home *** CD-ROM | disk | FTP | other *** search
- program Listing 2_2;
-
- const
-
- CumLaude = 3.2;
- FailingGPA = 2.0;
-
- type
-
- SexType = (male, female);
- String20 = string[20];
-
- NameRec = record
- Last : String20;
- Middle : String20;
- First : String20;
- end;
-
- Person = object
- Name : NameRec;
- Sex : SexType;
- Email : String20;
- procedure Init( FName, MName, LName : String20;
- Gender : SexType;
- E_mail : String20 );
- procedure SendMsg( f : string );
- end;
-
- Student = object(Person)
- GPA : real;
- procedure Init(FName, MName, LName : String20;
- Gender : SexType;
- E_mail : String20;
- GradePointAvg : real );
- procedure PutGPA( NewGPA : real );
- end;
-
- Faculty = object(Person)
- Title : String20;
- procedure Init(FName, MName, LName : String20;
- Gender : SexType;
- E_mail, FTitle : String20 );
- procedure SendMsg( Msg : string );
- end;
-
- procedure Person.Init( FName, MName, LName : String20;
- Gender : SexType;
- E_mail : String20 );
- begin
- Name.First := FName;
- Name.Middle := MName;
- Name.Last := LName;
- Sex := Gender;
- Email := E_mail;
- end;
-
- procedure Person.SendMsg( f : string );
- var
- Title : string[3];
- begin
- if Sex = male then
- Title := 'Mr.'
- else
- Title := 'Ms.';
- writeln( 'TO: ', Title, ' ', Name.Last );
- writeln( 'ADDRESS: ', Email );
- writeln( '-----------------------------------------');
- writeln( f );
- writeln;
- end;
-
- procedure Student.Init( FName, MName, LName : String20;
- Gender : SexType;
- E_mail : String20;
- GradePointAvg : real);
- begin
- Person.Init( FName, MName, LName, Gender, E_mail );
- PutGPA( GradePointAvg );
- end;
-
- procedure Student.PutGPA( NewGPA : real );
- begin
- GPA := NewGPA;
- if GPA >= CumLaude then
- SendMsg(
- 'Your GPA makes you eligible for the Dean''s List');
- if GPA <= FailingGPA then
- SendMsg(
- 'You are on academic probation owing to a low GPA.');
- end;
-
- procedure Faculty.Init( FName, MName, LName : String20;
- Gender : SexType;
- E_mail, FTitle : String20 );
- begin
- Person.Init( FName, MName, LName, Gender, E_mail );
- Title := FTitle;
- end;
-
- procedure Faculty.SendMsg( Msg : string );
- begin
- writeln( 'TO: ', Title, ' ', Name.Last );
- writeln( 'ADDRESS: ', Email );
- writeln( '-----------------------------------------');
- writeln( Msg );
- writeln;
- end;
-
- var
-
- JohnDoe : Student;
- JaneDoe : Student;
- NickGogol : Faculty;
-
- begin
-
-
- JohnDoe.Init( 'John', 'A.', 'Doe', male, 'EM987', 2.20);
- JaneDoe.Init( 'Jane', 'A.', 'Doe', female, 'EM789', 3.24 );
- NickGogol.Init( 'Nikolai', 'Vasilievich', 'Gogol',
- male, 'DS000', 'Professor' );
-
- JohnDoe.SendMsg( 'Your library books are overdue.' );
- NickGogol.SendMsg(
- 'The books you ordered are at the bookstore.');
-
- JohnDoe.PutGPA( 1.97 );
-
- end.
-
- { Listing 2-2 }
-
-
-