Lecture 8: A Simple System Software Engineering: Class • member variables/functions • constructor (function) A simple system -elevator Page 1 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie Classes and Abstract Data Types(ADT) Structures: A data type with many member variables Classes: A data type with many member variables and member functions. ADT: Data types users know functionality of public member variables and member functions but not necessary the implementation details. Page 2 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie Class A class is similar to a data type and an object in a class is similar to a variable in a data type. A class may have associated member variables which is accessed via a dot after the name of the object and the variable name after the dot. Example: obj1.x1 or obj1.array[6] associated member functions which is accessed via a dot after the name of the object and the function name after the dot and parameter list in parenthesis after the function name. Example: obj1.f(x1,x2) Page 3 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie public member variables/functions: can be accessed in any function private member variables/functions: can only be accessed in member functions of the same class. Page 4 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie Syntax for Prototype a Class class class_name{//prototype a class public: //public functions and variables double a_function(); //prototype a member function int i; //prototype an int private: //private functions and variables no other //functions can access it except of the same class void auxi_function(); //an auxiliary function long another_variable; //private int };//end definition with semicolon; Page 5 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie class StudentRecord{//example of prototype class public: //so that other functions can access it. double final(); //prototype of member function void print_out(); //prototype output member function void get_scores(); //prototype input member function private: //no other functions can access //it except in the same class long int ID; //student id is long integer int score1, score2, exam; //scores of hmwk 1,2, exam double w1=0.25, w2=0.25, w3=0.5; };//end definition with semicolon; Page 6 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie Syntax for define member functions Return_type class_name:: function_name() { //statements of what to do with the function; //member variables and functions may be used //additional auxiliary variables may also be defined //and used } Page 7 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie void StudentRecord:: get_scores(){ cout << “enter student ID” <<endl; cin >> ID; //use of member variable cout << “enter his scores in hmwk1, hmwk2, exam\n”; cin >> score1>>score2>>exam; //use of member variables } void StudentRecord:: print_out() { cout << “Final score of ”<<ID<<“ is ”<<final()<<endl; //member variable is used. } double StudentRecord::final() • {//member function definition • return (w1*score1+w2*score2+w3*exam); • //member variables are used} Page 8 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie Initialization with constructors: class StudentRecord{ public: //so that other functions can access it. • • • • • double final(); //prototype of member function void print_out(); //prototype output member function void get_scores(); //prototype input member function StudentRecord(long id,int mark1, int mark2, int mark3); //a constructor prototype; private: • long int ID; //student id is long integer • int quiz, lab_work, exam; //marks for them • double w1=0.2, w2=0.2, w3=0.6; 5/29/2016 }; //end definition with semicolon; CS3369 Realtime Control Computer Software/DENG Xiaotie Page 9 Calling a constructor: class_name Obj_name(arguments for constructor); Object=class_name(arguments for constructor); Default constructor: class_name();//definition Calling default constructor: class_name Obj_name; Object=class_name(); Page 10 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie #include <iostream.h> #include <student.h> main(){StudentRecord x(971423,80,80,60);//constructor is // called according the following definition. x.print_out(); return 0;} StudentRecord::StudentRecord(long id,int mark1, int mark2, int mark3) {ID=id; quiz=mark1; lab_work=mark2; exam=mark3; } Page 11 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie #include <iostream.h> #include <student.h> char anymore(); //prototype main(){char more; StudentRecord x; do { • x.get_scores(); • x.print_out(); • more=anymore(); //can be accessed in main() since it is //a public function //the same reason as above } while (more= =‘Y’); return 0;} Page 12 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie A simple System-an elevator system Define a class for an elevator array[6]- for the 6 floors of the building, if a person press ‘i’ in the elevator, then array[I-1] is set to be 1. sign-indicates the elevator is going “up” or “down”. k- the present position of the elevator. count-the number of stops in this round. Page 13 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie A simple System-an elevator system(continued) Description of the system: there are two (or three) elevators to serve the building Control strategies: when an elevator reaches a level, it will test if stop is required and will stop if yes. To balance the number of people/number of stops, we use count to remember the number of times it stopped in this round (from 1 to 6 or from 6 to 1). Page 14 5/29/2016 CS3369 Realtime Control Computer Software/DENG Xiaotie