cse 2341 honors principles of computer science i
Download
Skip this Video
Download Presentation
CSE 2341 - Honors Principles of Computer Science I

Loading in 2 Seconds...

play fullscreen
1 / 16

CSE 2341 - Honors Principles of Computer Science I - PowerPoint PPT Presentation


  • 117 Views
  • Uploaded on

CSE 2341 - Honors Principles of Computer Science I. Spring 2008 Mark Fontenot [email protected] Note Set 8. Quick Look. Class Diagrams More inheritance. Class Diagrams. Each student is in 0 or 1 class( es ). One or more students in a ClassSection.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CSE 2341 - Honors Principles of Computer Science I' - haven


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
quick look
Quick Look

Class Diagrams

More inheritance

class diagrams
Class Diagrams

Each student is in 0 or 1 class(es)

One or more students in a ClassSection

Filled in Diamond: Represents composition

class diagrams inheritance
Class Diagrams - Inheritance

Generalization: Person is a

general form of Student and

Professor.

Student is person

Professor is person

No real idea of multiplicity in generalization

overriding member functions
Overriding Member Functions
  • A member function of a derived class may have the same name and signature of a function in the base class
  • GradedActivity Class
    • Need a CurvedActivity class
      • multiplies the raw score by a curve value before setting the score
gradedactivity h
GradedActivity.h

#ifndef GRADEDACTIVITY_H

#define GRADEDACTIVITY_H

// Grade class declaration

class GradedActivity

{

private:

char Letter;

float Score;

void determineGrade();

public:

void SetScore(float S)

{

Score = S;

determineGrade();

}

float GetScore() { return Score; }

char GetLetter() { return Letter; }

};

#endif

GradedActivity.h

This function will

be overridden in the

derived class

CurvedGrade

gradedactivity h1
GradedActivity.h

#include “GradedActivity.h"

void GradedActivity::determineGrade(void)

{

if (Score > 89)

Letter = 'A';

else if (Score > 79)

Letter = 'B';

else if (Score > 69)

Letter = 'C';

else if (Score > 59)

Letter = 'D';

else

Letter = 'F';

}

GradedActivity.cpp

curvedactivity h
CurvedActivity.h

#ifndef CURVEDACTIVITY_H

#define CURVEDACTIVITY_H

#include “Grade.h”

class CurvedActivity: public GradedActivity{

protected:

float rawScore; float percentage;public:

// overridden in derived class

void setScore (float s) {

rawScore = s; // base class setScore method

GradedActivity::setScore(

rawScore * percentage);

}

CurvedActivity.h

Calls the base class member function

curvedactivity h1
CurvedActivity.h

void setPercentage (float c) { percentage = c; }

float getPercentage()

{ return percentage; }

float getRawScore()

{ return rawScore; }

};

CurvedActivity.h

gradedriver cpp
gradeDriver.cpp

// main driver#include #include “CurvedActivity.h”using namespace std;int main(){

CurvedActivity exam; float numericScore, percentage;

cout << “Enter the student’s raw numeric score: “; cin >> numericScore; cout << “enter the curve percentage for this student:”; cin >> percentage;

exam.setPercentage (percentage); exam.setScore(numericScore); cout << exam.getRawScore() << exam.getScore() << exam.getLetter();

return 0;

}

gradeDriver.cpp

overriding functions
Overriding Functions
  • If a derived class overrides a base class member function
    • objects of the base class call the base class version of the member function
    • objects of the derived class call the derived class version of the member function
overriding functions1
Overriding Functions

class Base

{

public:

void ShowMsg()

{ cout << "This is the Base class.\n"; }

};

class Derived : public Base

{

public:

void ShowMsg()

{ cout << "This is the Derived class.\n"; }

};

int main(void)

{

Base B;

Derived D;

B.ShowMsg(); // ShowMsg of base class called

D.ShowMsg(); // ShowMsg of derived class called

}

This is the Base class.

This is the Derived class.

polymorphism
Polymorphism

Polymorphism - the ability to take many forms

Occurs when member functions in a class hierarchy behave differently depending on which object performed the function call

Redefinition of a function does not create polymorphism.

polymorphism1
Polymorphism

classBase

{

public:

doCalc(){//something;}

calc()

{ doCalc(); }

};

classDerived:public Base

{

public:

doCalc()

{//something different;}

};

int main()

{

Derived d;

d.calc();

return 0

}

Which doCalc()

gets called?

binding times
Binding Times
  • Static Binding
    • function call is bound to function implementation at compile time
  • Dynamic Binding
    • function call is bound to a function implementation at run-time depending on the type of the object responsible for the call
virtual function
Virtual Function
  • A virtual function is a function that expects to be redefined in a derived class.
  • Compiler performs dynamic binding on virtual functions
  • Declared by placing virtual before the return type in the base class’s function declaration
    • virtual void myFunction();
    • only placed in prototype or header if defined in class
ad