Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Composition - Object Oriented Programming - Lecture Slides, Slides of Object Oriented Programming

Composition, Implementation of the student class, Creating objects of one class, Relationship, Code reuse, Conceptual notation, Main Function, Output, Constructors of the sub objects are points you can learn in this Object Oriented Programming lecture.

Typology: Slides

2011/2012

Uploaded on 11/09/2012

bacha
bacha 🇮🇳

4.3

(41)

215 documents

1 / 19

Toggle sidebar

Related documents


Partial preview of the text

Download Composition - Object Oriented Programming - Lecture Slides and more Slides Object Oriented Programming in PDF only on Docsity!

Object-Oriented Programming

(OOP)

Lecture No. 14

Consider the following implementation

of the student class:

*gpa : float rollNo : int name : char * Student(char * = NULL, int = 0, float = 0.0); Student(const Student &) GetName() const : const char * SetName(char ) : void ~Student() … Student

class Student{

private:

float gpa;

char * name;

int rollNumber;

public:

Student(char * = NULL, int = 0,

float = 0.0);

Student(const Student & st);

const char * GetName() const;

~Student();

};

Student::Student(char * _name, int roll, float g){ cout << "Constructor::Student..\n"; if (!_name){ name = new char[strlen(_name)+1]; strcpy(name,_name); } else name = NULL; rollNumber = roll; gpa = g; }

Student::Student(const Student & st){ if(str.name != NULL){ name = new char[strlen(st.name) + 1]; strcpy(name, st.name); } else name = NULL; rollNumber = st.roll; gpa = st.g; }

const char * Student::GetName(){

return name;

}

Student::~Student(){

delete [] name;

}

  • C++: “ its all about code reuse”
  • Composition:
    • Creating objects of one class inside another class
  • Has a relationship:
    • Bird has a beak
    • Student has a name

Conceptual notation:

**String() SetString(char ) : void GetString() const : const char * ~String() … gpa : float rollNo : int name : String Student(char * = NULL, int = 0, float = 0.0); Student(const Student &) GetName() const : String GetNamePtr() const : const char * SetName(char ) : void ~Student() … Student string : char * String

class String{

private:

char * ptr;

public:

String();

String(const String &);

void SetString(char *);

const char * GetString() const;

~String()

};

String::String(){ cout << "Constructor::String..\n"; ptr = NULL; } String::String(const String & str){ if(str.ptr != NULL){ string = new char[strlen(str.ptr)+1]; strcpy(ptr, str.ptr); } else ptr = NULL; }

void String::SetString(char * str){ if(ptr != NULL){ delete [] ptr; ptr = NULL; } if(str != NULL){ ptr = new char[strlen(str)+1]; strcpy(ptr, str); } }

const char * String::GetString()const{

return ptr;

}

String::~String(){

delete [] ptr;

cout <<"Destructor::String..\n";

}

class Student{ private: float gpa; int rollNumber; String name; public: Student(char* =NULL, int=0,float=0.0); Student(const Student &); void SetName(const char *); String GetName() const; const char * GetNamePtr const(); ~Student(); … };

Student Student(char * _name,

int roll, float g){

cout <<"Constructor::Student..\n";

name.SetString(_name);

rollNumber = roll;

gpa = g;

}

Student::Student(const Student & s){

name.Setname(s.name.GetString());

gpa = s.gpa;

rollNo = s.rollNo;

}

const char * Student::GetNamePtr() const{

return name.GetString();

}

void Student::SetName(const char * n){

name.SetString(n);

}

Student::~Student(){

cout <<"Destructor::Student..\n";

}

Main Function:

void main(){

Student aStudent("Fakhir", 899,

3.1);

cout << endl;

cout << “Name:”

<< aStudent.GetNamePtr()

<< “\n”;

}

  • Output:

Constructor::String..

Constructor::Student..

Name: Fakhir

Destructor::Student..

Destructor::String..

  • Constructors of the sub-objects are always executed before the constructors of the master class
  • Example:
    • Constructor for the sub-object

name is executed before the

constructor of Student