1 / 16

CSE 2341 - Honors Principles of Computer Science I

CSE 2341 - Honors Principles of Computer Science I. Spring 2008 Mark Fontenot mfonten@engr.smu.edu. 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.

haven
Download Presentation

CSE 2341 - Honors Principles of Computer Science I

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 2341 - HonorsPrinciples of Computer Science I Spring 2008 Mark Fontenot mfonten@engr.smu.edu Note Set 8

  2. Quick Look Class Diagrams More inheritance

  3. Class Diagrams Each student is in 0 or 1 class(es) One or more students in a ClassSection Filled in Diamond: Represents composition

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. CurvedActivity.h void setPercentage (float c) { percentage = c; } float getPercentage() { return percentage; } float getRawScore() { return rawScore; } }; CurvedActivity.h

  10. gradeDriver.cpp // main driver#include <iostream>#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

  11. 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

  12. 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.

  13. 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.

  14. 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?

  15. 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

  16. 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

More Related