1 / 31

Understanding Inheritance in Object-Oriented Programming

Learn about inheritance and object-oriented programming concepts in CS200 at the University of Virginia. Explore how objects are used to package state and procedures, with examples like make-number and make-fraction. Understand why redefining methods like add can lead to code complexity.

fieldsd
Download Presentation

Understanding Inheritance in Object-Oriented Programming

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. David Evans http://www.cs.virginia.edu/evans Lecture 21: Inheritance CS200: Computer Science University of Virginia Computer Science

  2. Menu • Objects Review • Inheritance • PS5: Databases • PS6 CS 200 Spring 2003

  3. Objects • When we package state and procedures together we have an object • Programming with objects is object-oriented programming CS 200 Spring 2003

  4. make-number (define make-number (lambda (n) (lambda (message) (cond ((eq? message 'value) (lambda (self) n)) ((eq? message 'add) (lambda (self other) (+ (ask self 'value) (ask other 'value)))))))) Why don’t we just use n? (Well see why later today.) CS 200 Spring 2003

  5. ask Lecture 20: (define (ask object message) (object message)) (define (ask object message . args) (apply (object message) object args)) CS 200 Spring 2003

  6. (define make-number (lambda (n) (lambda (message) (cond ((eq? message 'value) (lambda (self) n)) ((eq? message 'add) (lambda (self other) (+ (ask self 'value) (ask other 'value)))))))) global environment + : #<primitive:+> make-number: san: > (define san (make-number 3)) > (ask san 'value) 3 > (ask san 'add (make-number 4)) 7 3 n : parameters: body: ((lambda … parameters: message body: (cond ((eq? … CS 200 Spring 2003

  7. There are many kinds of numbers… • Whole Numbers (0, 1, 2, …) • Integers (-23, 73, 0, …) • Fractions (1/2, 7/8, …) • Floating Point (2.3, 0.0004, 3.14159) • But they can’t all do the same things • We can get the denominator of a fraction, but not of an integer CS 200 Spring 2003

  8. make-fraction (define make-fraction (lambda (numerator denominator) (lambda (message) (cond ((eq? message 'value) (lambda (self) (/ numerator denominator)) ((eq? message 'add) (lambda (self other) (+ (ask self 'value) (ask other 'value))) ((eq? message ‘get-numerator) (lambda (self) numerator)) ((eq? message ‘get-denominator) (lambda (self) denominator)) ))))) Same as in make-number CS 200 Spring 2003

  9. Why is redefining add a bad thing? • Cut-and-paste is easy but… • There could be lots of number methods (subtract, multiply, print, etc.) • Making the code bigger makes it harder to understand • If we fix a problem in the number add method, we have to remember to fix the copy in make-fraction also (and real, complex, float, etc.) CS 200 Spring 2003

  10. Inheritance CS 200 Spring 2003

  11. make-fraction (define (make-fraction numer denom) (let ((super (make-number #f))) (lambda (message) (cond ((eq? message 'value) (lambda (self) (/ numer denom))) ((eq? message 'get-denominator) (lambda (self) denom)) ((eq? message 'get-numerator) (lambda (self) numer)) (else (super message)))))) CS 200 Spring 2003

  12. Using Fractions > (define half (make-fraction 1 2)) > (ask half 'value) 1/2 > (ask half 'get-denominator) 2 > (ask half 'add (make-number 1)) 3/2 > (ask half 'add half) 1 CS 200 Spring 2003

  13. > (trace ask) > (trace eq?) > (ask half 'add half) |(ask #<procedure> add #<procedure>) | (eq? add value) | #f | (eq? add get-denominator) | #f | (eq? add get-numerator) | #f | (eq? add value) | #f | (eq? add add) | #t | (ask #<procedure> value) | |(eq? value value) | |#t | 1/2 | (ask #<procedure> value) | |(eq? value value) | |#t | 1/2 |1 1 CS 200 Spring 2003

  14. make-number make-fraction > (trace ask) > (trace eq?) > (ask half 'add half) |(ask #<procedure> add #<procedure>) | (eq? add value) | #f | (eq? add get-denominator) | #f | (eq? add get-numerator) | #f | (eq? add value) | #f | (eq? add add) | #t | (ask #<procedure> value) | |(eq? value value) | |#t | 1/2 | (ask #<procedure> value) | |(eq? value value) | |#t | 1/2 |1 1 CS 200 Spring 2003

  15. Inheritance Inheritance is using the definition of one class to make another class make-fraction uses make-number to inherit the behaviors of number CS 200 Spring 2003

  16. Number • English A Fraction is a kind of Number. • C++ Fraction is a derived class whose base class is Number • Java Fraction extends Number. • Eiffel Fraction inherits from Number. • Beta Fraction is a subpattern of Number. • Smalltalk (72) Didn’t have inheritance! Fraction Note: people sometimes draw this different ways CS 200 Spring 2003

  17. CS 200: Fraction inherits from Number. Fraction is a subclass of Number. The superclass of Fraction is Number. Number Fraction CS 200 Spring 2003

  18. Inheritance and Subtyping • Inheritance: reusing the implementation of one object to make a new kind of object • Often confused with subtyping which is saying one kind of object can be used where another kind of object is expected • CS200 won’t cover subtyping (take CS201J) • We will cover types (Class 29) CS 200 Spring 2003

  19. PS5 How are commercial databases different from what you implemented for PS5? UVa’s Integrated Systems Project to convert all University information systems to use an Oracle database was originally budgeted for $58.2 Million (starting in 1999). Actual cost is likely to be $100 Million. http://www.virginia.edu/isp/ CS 200 Spring 2003

  20. Real Databases • Atomic Transactions: a transaction may involve many modifications to database tables, but the changes should only happen if the whole transaction happens (e.g., don’t charge the credit card unless the order is sent to the shipping dept) • Security: limit read/write access to tables, entries and fields • Storage: need to efficiently store data on disk, provide backup mechanisms • Scale: to support really big data tables, real databases do lots of clever things CS 200 Spring 2003

  21. How big are big databases? • Microsoft TerraServer • Claimed biggest in 1998 • Aerial photos of entire US (1 meter resolution) CS 200 Spring 2003

  22. Rotunda Amphitheater You are here CS 200 Spring 2003

  23. You are here AFC? Picture from 2 Apr 1994 CS 200 Spring 2003

  24. Big Databases • Microsoft TerraServer • 3.3 Terabytes (claimed biggest in 1998) • 1 Terabyte = 240 Bytes ~ 1 Trillion Bytes • Wal-Mart • 285 Terabytes • Stanford Linear Accelerator (BaBar) • 500 Terabytes (30 KB per particle collision) CS 200 Spring 2003

  25. PS6Make an adventure game programming with objects CS 200 Spring 2003

  26. object PS6 Classes physical-object place make-class is the procedure for constructing objects in the class class mobile-object thing person student inherits from person which inherits from mobile-object which inherits from physical-object which inherits from object. police-officer student CS 200 Spring 2003

  27. object PS6 Objects physical-object place Cabal Hall mobile-object Recursa (make-place name) evaluates to an object that is an instance of the class place. thing person police-officer student Alyssa P. Hacker

  28. Are there class hierarchies like this in the real world or just in fictional worlds like Charlottansville? CS 200 Spring 2003

  29. Microsoft Foundation Classes CButton inherits from CWnd inherits from CObject “A button is a kind of window is a kind of object” CS 200 Spring 2003

  30. RotationPathInterpolator PathInterpolator Interpolator Node Selector Leaf SceneGraphObject Not at all uncommon to have class hierarchies like this! Java 3D Class Hierarchy Diagram http://java.sun.com/products/java-media/3D/collateral/j3dclass.html CS 200 Spring 2003

  31. Charge • PS5 • Return now, comments will be available Wednesday • PS6 • Programming with Objects • Wednesday and Friday: • How will solving the (generalized) Cracker Barrel Peg Board puzzle help cure cancer? CS 200 Spring 2003

More Related