Objects First With Java A Practical Introduction Using BlueJ Improving structure with inheritance 2.0.

Slides:



Advertisements
Similar presentations
FEN IntroJava2006 AAU1 Nedarvning Specialisering/Generalisering Subklasse/Superklasse Statisk/Dynamisk type Polymorfi Interfaces.
Advertisements

Further abstraction techniques Abstract classes and interfaces 5.0.
OOP (Java): Inheritance/ OOP Objectives – –to introduce inheritance, superclasses, subclasses, polymorphic data structures, and wrapper.
Inheritance in collections Week Main concepts to be covered Inheritance in ArrayList objects Subtyping Substitution.
CS1054: Lecture 18 - Inheritance. The DoME example "Database of Multimedia Entertainment" stores details about CDs and videos –CD: title, artist, # tracks,
Improving structure with inheritance Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts.
1 OOP in C#:Object Interaction. Inheritance and Polymorphism. Session 2: OOP in C#
Collections & Loops Chapter 5 Copyright © 2012 Pearson Education, Inc.
Chapter 8 Improving Structure with Inheritance. The DoME Example The Database of Multimedia Entertainment We will be storing information about CDs and.
Using interfaces Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling How would you find the maximum.
Improving structure with inheritance (Chapters 8 and 9)
Improving structure with inheritance
Improving structure with inheritance. 25/11/2004Lecture 7: Inheritance2 Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables.
1 Inheritance  Inheritance allows a software developer to derive a new class from an existing one  The existing class is called the parent class, or.
Grouping Objects Arrays and for loops. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Fixed-Size Collections.
Using Collections. Review of Collections Using an ArrayList It increases its capacity as necessary. It keeps a private count ( size() accessor). It keeps.
Grouping Objects 3 Iterators, collections and the while loop.
Inheritance Chapter 8.
More about inheritance Exploring polymorphism. 02/12/2004Lecture 8: More about inheritance2 Main concepts to be covered method polymorphism static and.
CPSC150 Inheritance Details Chapter 9. CPSC150 Print in Entertainment ver 2 (with inheritance): public void print() { System.out.print("title: " + title.
Understanding class definitions Looking inside classes 3.0.
Grouping Objects 2 Collections and the for-each loop Collections and the while loop.
Grouping Objects 1 Introduction to Collections.
CPSC150 Interfaces Chapter CPSC150 Inheritance Review No different than any other class. Has no access to or information about subclasses class.
Make Sure You Know All This!. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 2 Objects and Classes.
Understanding class definitions – Part II –. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main.
More about inheritance Exploring polymorphism 5.0.
Abstract Classes and Interfaces
More about inheritance Exploring polymorphism 3.0.
Random, Collections & Loops Chapter 5 Copyright © 2012 Pearson Education, Inc.
Generalized Containers CSIS 3701: Advanced Object Oriented Programming.
Improving structure with inheritance Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables Objects First with Java.
Improving structure with inheritance Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables Objects First with Java.
Grouping objects Introduction to collections 5.0.
Programming Fundamentals 2: Inheritance/ F II Objectives – –to introduce inheritance, superclasses, subclasses, polymorphic data structures,
Session 2: OOP in C# OOP in C#: –Object Interaction. –Inheritance and Polymorphism. Autumn 20121UCN Technology: IT/Computer Science.
Understanding class definitions
Objects First With Java A Practical Introduction Using BlueJ Supplementary Material for Java
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
More about inheritance Exploring polymorphism 5.0.
Grouping objects Iterators. Iterator type Third variation to iterate over a collection Uses a while loop and Iterator object But NO integer index variable.
Comp1004: Inheritance I Super and Sub-classes. Coming up Inheritance and Code Duplication – Super and sub-classes – Inheritance hierarchies Inheritance.
Objects First With Java A Practical Introduction Using BlueJ Grouping objects Collections and iterators 1.0.
Objects First With Java A Practical Introduction Using BlueJ Casting Week
Grouping objects Arrays. 2 Fixed-size collections The maximum collection size may be pre-determined with an upper limit Array is an fixed-size collection.
Improving structure with inheritance 3.0. The media project stores details about CDs and DVDs –CD: title, artist, number of tracks, playing time, got-it,
Session 06: C# OOP-3 Inheritance and Polymorphism. Static and dynamic type of an object. FEN AK - IT: Softwarekonstruktion.
Grouping objects Introduction to collections 5.0.
1 COS 260 DAY 17 Tony Gauvin. 2 Agenda Questions? 7 th Mini quiz –Chapter 7 –Password “GoBengals” –40 min Assignment 4 posted –Due Nov 9 (one week) Capstone.
1 COS 260 DAY 22 Tony Gauvin. 2 Agenda Questions? 9 th Mini Quiz corrected –Good results Assignment 5 Not corrected yet Assignment 6 Posted (one more)
1 COS 260 DAY 18 Tony Gauvin. 2 Agenda Questions? 7 th Mini quiz Graded –Good results 8 th Mini Quiz –Chap 8  Next class Assignment 4 Due Assignment.
Grouping objects Iterators, collections and the while loop Equality and Equality == and equals(…)
Coming up Which methods are where? – Overriding Calling super’s methods Coupling and cohesion.
Comp1004: Inheritance II Polymorphism. Coming up Inheritance Reminder Overriding methods – Overriding and substitution Dynamic Binding Polymorphism –
Improving structure with inheritance Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables © 2017 Pearson Education,
Coming up ArrayList ArrayList vs Array – Declaration – Insertion – Access – Removal Wrapper classes Iterator object.
Coming up Inheritance – Code duplication – Super classes – Constructors Polymorphic collections – “Anywhere a super class is, a sub class can go” Casting.
9 Improving structure with inheritance
Objects First with Java Introduction to collections
More about inheritance
COS 260 DAY 19 Tony Gauvin.
Understanding class definitions
Lecture 19 - Inheritance (Contd).
More about inheritance
COS 260 DAY 18 Tony Gauvin.
Understanding class definitions
Objects First with Java
Comp1202: Inheritance I Super and Sub-classes.
Improving structure with inheritance
Lecture 15 Inheritance.
Presentation transcript:

Objects First With Java A Practical Introduction Using BlueJ Improving structure with inheritance 2.0

2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables

3 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling The DoME example "Database of Multimedia Entertainment" stores details about CDs and videos –CD: title, artist, # tracks, playing time, got- it, comment –Video: title, director, playing time, got-it, comment allows (later) to search for information or print lists

4 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling DoME objects

5 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling DoME classes

6 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling DoME object model

7 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Class diagram

8 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling CD source code public class CD { private String title; private String artist; private String comment; CD(String theTitle, String theArtist) { title = theTitle;artist = theArtist;comment = " "; } void setComment(String newComment) {... } String getComment() {... } void print() {... }...} incomplete (comments!) [ ]

9 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Video source code public class Video { private String title; private String director; private String comment; Video(String theTitle, String theDirect) { title = theTitle;director = theDirect;comment = " "; } void setComment(String newComment) {... } String getComment() {... } void print() {... }...} incomplete (comments!) []

10 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling class Database { private ArrayList cds ; private ArrayList videos ;... public void list() { for(Iterator iter = cds.iterator(); iter.hasNext(); ) { CD cd = (CD)iter.next(); cd.print(); System.out.println(); // empty line between items } for(Iterator iter = videos.iterator(); iter.hasNext(); ) { Video video = (Video)iter.next(); video.print(); System.out.println(); // empty line between items } Database source code

11 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Critique of DoME code duplication –CD and Video classes very similar (large part are identical) –makes maintenance difficult/more work –introduces danger of bugs through incorrect maintenance code duplication also in Database class

12 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Using inheritance

13 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Using inheritance define one superclass : Item define subclasses for Video and CD the superclass defines common attributes the subclasses inherit the superclass attributes the subclasses add own attributes

14 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Inheritance hierarchies

15 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Inheritance in Java public class Item {... } public class CD extends Item {... } public class Video extends Item {... } no change here change here

16 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Superclass public class Item { private String title; private int playingTime; private boolean gotIt; private String comment; // constructors and methods omitted. }

17 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Subclasses public class CD extends Item { private String artist; private int numberOfTracks; // constructors and methods omitted. } public class Video extends Item { private String director; // constructors and methods omitted. }

18 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class Item { private String title; private int playingTime; private boolean gotIt; private String comment; /** * Initialise the fields of the item. */ public Item(String theTitle, int time) { title = theTitle; playingTime = time; gotIt = false; comment = ""; } // methods omitted } Inheritance and constructors

19 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Inheritance and constructors public class CD extends Item { private String artist; private int numberOfTracks; /** * Constructor for objects of class CD */ public CD(String theTitle, String theArtist, int tracks, int time) { super(theTitle, time); artist = theArtist; numberOfTracks = tracks; } // methods omitted }

20 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Superclass constructor call Subclass constructors must always contain a 'super' call. If none is written, the compiler inserts one (without parameters) –works only, if the superclass has a constructor without parameters Must be the first statement in the subclass constructor.

21 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Adding more item types

22 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Deeper hierarchies

23 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Review (so far) Inheritance (so far) helps with: Avoiding code duplication Code reuse Easier maintenance Extendibility

24 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class Database{ private ArrayList items; /** * Construct an empty Database. */ public Database() { items = new ArrayList(); } /** * Add an item to the database. */ public void addItem(Item theItem) { items.add(theItem); }...} New Database source code avoids code duplication in client!

25 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling /** * Print a list of all currently stored CDs and * videos to the text terminal. */public void list(){ for(Iterator iter = items.iterator(); iter.hasNext(); ) { Item item = (Item)iter.next(); item.print(); System.out.println(); // empty line between items } New Database source code

26 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Subtyping First, we had: public void addCD(CD theCD) public void addVideo(Video theVideo)Now, we have: public void addItem(Item theItem) We call this method with: Video myVideo = new Video(...); database.addItem(myVideo);

27 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Subclasses and subtyping Classes define types. Subclasses define subtypes. Objects of subclasses can be used where objects of supertypes are required. (This is called substitution.)

28 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Subtyping and assignment Vehicle v1 = new Vehicle();Vehicle v2 = new Car();Vehicle v3 = new Bicycle(); subclass objects may be assigned to superclass variables

29 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Subtyping and parameter passing public class Database { public void addItem(Item theItem) {... } Video video = new Video(...); CD cd = new CD(...); database.addItem(video); database.addItem(cd); subclass objects may be passed to superclass parameters

30 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Object diagram

31 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Class diagram

32 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Polymorphic variables Object variables in Java are polymorphic. (They can hold objects of more than one type.) They can hold objects of the declared type, or of subtypes of the declared type.

33 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling The Object class All classes inherit from Object.

34 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Polymorphic collections All collections are polymorphic. The elements are of type Object. public void add(Object element) public Object get(int index)

35 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Casting revisited Can assign subtype to supertype. Cannot assign supertype to subtype! String s1 = myList.get(1); error! Casting fixes this : String s1 = (String) myList.get(1); (only if the element really is a String!)

36 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Wrapper classes All objects can be entered into collections......because collections accept elements of type Object......and all classes are subtypes of Object. Great! But what about simple types?

37 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Wrapper classes Simple types (int, char, etc) are not objects. They must be wrapped into an object! Wrapper classes exist for all simple types: simple typewrapper class intInteger floatFloat charCharacter...

38 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Wrapper classes int i = 18; Integer iwrap = new Integer(i); myCollecton.add(iwrap);... Integer element = (Integer) myCollection.get(0); int value = element.intValue() wrap the int value add the wrapper retrieve the wrapper unwrap

39 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Review Inheritance allows the definition of classes as extensions of other classes. Inheritance –avoids code duplication –allows code reuse –simplifies the code –simplifies maintenance and extending Variables can hold subtype objects. Subtypes can be used wherever supertype objects are expected (substitution).