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.

Slides:



Advertisements
Similar presentations
OOP (Java): Inheritance/ OOP Objectives – –to introduce inheritance, superclasses, subclasses, polymorphic data structures, and wrapper.
Advertisements

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,
Objects First With Java A Practical Introduction Using BlueJ Improving structure with inheritance 2.0.
Improving structure with inheritance Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts.
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.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Inheritance and Polymorphism.
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.
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.
Understanding class definitions Looking inside classes 3.0.
1 Generics and Using a Collection Generics / Parameterized Classes Using a Collection Customizing a Collection using Inheritance Inner Classes Use of Exceptions.
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.
1 Inheritance and Polymorphism. 2 Motivations Suppose you will define classes to model circles, rectangles, and triangles. These classes have many common.
More about inheritance Exploring polymorphism 5.0.
Abstract Classes and Interfaces
More about inheritance Exploring polymorphism 3.0.
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.
1 Generics and Using a Collection Generics / Parameterized Classes Using a Collection Customizing a Collection using Inheritance Inner Classes Use of Exceptions.
Improving structure with inheritance Main concepts to be covered Inheritance Subtyping Substitution Polymorphic variables Objects First with Java.
Inheritance and Polymorphism Daniel Liang, Introduction to Java Programming.
Grouping objects Introduction to collections 5.0.
Programming Fundamentals 2: Inheritance/ F II Objectives – –to introduce inheritance, superclasses, subclasses, polymorphic data structures,
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.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 9 Inheritance and.
Comp1004: Inheritance I Super and Sub-classes. Coming up Inheritance and Code Duplication – Super and sub-classes – Inheritance hierarchies Inheritance.
1 COS 260 DAY 19 Tony Gauvin. 2 Agenda Questions? 8 th Mini Quiz not corrected yet 9 Th Mini Quiz next class –Due November 19 Finish Discussion on More.
1 COS 260 DAY 14 Tony Gauvin. 2 Agenda Questions? 6 th Mini quiz graded  Oct 29 –Chapter 6 Assignment 4 will be posted later Today –First two problems.
1 CSC 2053 New from AutoBoxing 3 Before J2SE 5.0, working with primitive types required the repetitive work of converting between the primitive.
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,
1 COS 260 DAY 12 Tony Gauvin. 2 Agenda Questions? 5 th Mini quiz –Chapter 5 40 min Assignment 3 Due Assignment 4 will be posted later (next week) –If.
Grouping objects Introduction to collections 5.0.
Java How to Program, 9/e © Copyright by Pearson Education, Inc. All Rights Reserved.
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(…)
(C) 2010 Pearson Education, Inc. All rights reserved. Java How to Program, 8/e.
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 Inheritance – Code duplication – Super classes – Constructors Polymorphic collections – “Anywhere a super class is, a sub class can go” Casting.
9 Improving structure with inheritance
Chapter 20 Generic Classes and Methods
More about inheritance
COS 260 DAY 19 Tony Gauvin.
Chapter 9 Inheritance and Polymorphism
COS 260 DAY 19 Tony Gauvin.
Lecture 19 - Inheritance (Contd).
COS 260 DAY 11 Tony Gauvin.
More about inheritance
COS 260 DAY 18 Tony Gauvin.
Understanding class definitions
Collections and iterators
COS 260 DAY 23 Tony Gauvin.
Objects First with Java
COS 260 DAY 23 Tony Gauvin.
Comp1202: Inheritance I Super and Sub-classes.
Review: libraries and packages
Improving structure with inheritance
Lecture 15 Inheritance.
Collections and iterators
Presentation transcript:

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 progress reports over due Discussion on Improving Structure with Inheritance

Improving structure with inheritance 5.0

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

5 The Network example A small, prototype social network. Supports a news feed with posts. Stores text posts and photo posts. –MessagePost: multi-line text message. –PhotoPost: photo and caption. Allows operations on the posts: –E.g., search, display and remove. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

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

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

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

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

11 Message- Post source code Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class MessagePost{ private String username; private String message; private long timestamp; private int likes; private ArrayList comments; public MessagePost(String author, String text) { username = author;message = text;timestamp = System.currentTimeMillis();likes = 0;comments = new ArrayList (); } public void addComment(String text)... public void like()... public void display()......} Just an outline

12 public class PhotoPost{ private String username; private String filename; private String caption; private long timestamp; private int likes; private ArrayList comments; public PhotoPost(String author, String filename, String caption) { username = author;this.filename = filename;this.caption = caption;timestamp = System.currentTimeMillis();likes = 0;comments = new ArrayList (); } public void addComment(String text)... public void like() … public void display() …...} Photo- Post source code Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Just an outline

13 NewsFeed Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class NewsFeed{ private ArrayList messages ; private ArrayList photos ;... public void show() { for( MessagePost message : messages ) { message.display(); System.out.println(); // empty line between posts } for( PhotoPost photo : photos ) { photo.display (); System.out.println(); // empty line between posts }

14 Critique of Network Code duplication: –MessagePost and PhotoPost classes very similar (large parts are identical) –makes maintenance difficult/more work –introduces danger of bugs through incorrect maintenance Code duplication in NewsFeed class as well. How would add a new type of post? Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

16 Using inheritance define one superclass : Post define subclasses for MessagePost and PhotoPost the superclass defines common attributes (via fields) the subclasses inherit the superclass attributes the subclasses add other attributes Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

18 Inheritance in Java Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class Post {... } public class MessagePost extends Post {... } public class PhotoPost extends Post {... } no change here change here

19 Superclass Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class Post { private String username; private long timestamp; private int likes; private ArrayList comments; // constructor and methods omitted. }

20 Subclasses Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class MessagePost extends Post { private String message; // constructor and methods omitted. } public class PhotoPost extends Post { private String filename; private String caption; // constructor and methods omitted. }

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

22 Inheritance and constructors Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class Post { private String username; private long timestamp; private int likes; private ArrayList comments; /** * Initialise the fields of the post. */ public Post(String author) { username = author; timestamp = System.currentTimeMillis(); likes = 0; comments = new ArrayList (); } // methods omitted }

23 Inheritance and constructors Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class MessagePost extends Post { private String message; /** * Constructor for objects of class MessagePost */ public CD(String author, String text) { super(author); message = text; } // methods omitted }

24 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. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

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

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

28 Please the following in a Inheritance hierarchy Apple Ice cream Bread Fruit Food item Dessert Chocolate mousse Baguette Cereal Orange Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

29 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class NewsFeed{ private ArrayList posts; /** * Construct an empty news feed. */ public NewsFeed() { posts = new ArrayList (); } /** * Add a post to the news feed. */ public void addPost(Post post) { posts.add(post); }...} avoids code duplication in the client class! Revised NewsFeed source code

30 New NewsFeed source code Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling /** * Show the news feed. Currently: print the * news feed details to the terminal. * (Later: display in a web browser.) */public void show(){ for( Post post : posts ) { post.display(); System.out.println(); // Empty line... }

31 Subtyping Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling First, we had: public void addMessagePost( MessagePost message) public void addPhotoPost( PhotoPost photo)Now, we have: public void addPost(Post post)We call this method with: PhotoPost myPhoto = new PhotoPost (...); feed.addPost(myPhoto);

32 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.) Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

34 Subtyping and parameter passing Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class NewsFeed { public void addPost(Post post) {... } PhotoPost photo = new PhotoPost(...); MessagePost message = new MessagePost(...); feed.addPost(photo); feed.addPost(message); subclass objects may be used as actual parameters for the superclass

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

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

37 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. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

38 Casting We can assign subtype to supertype … … but we cannot assign supertype to subtype! Vehicle v; Car c = new Car(); v = c; // correct c = v; // compile-time error! Casting fixes this : c = (Car) v; (only ok if the vehicle really is a Car!) Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

39 Casting An object type in parentheses. Used to overcome 'type loss'. The object is not changed in any way. A runtime check is made to ensure the object really is of that type: –ClassCastException if it isn't! Use it sparingly. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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

41 Polymorphic collections All collections are polymorphic. The elements could simply be of type Object. public void add(Object element) public Object get(int index) Usually avoided by using a type parameter with the collection. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

42 Polymorphic collections A type parameter limits the degree of polymorphism: ArrayList Collection methods are then typed. Without a type parameter, ArrayList is implied. Likely to get an “unchecked or unsafe operations” warning. More likely to have to use casts. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

43 Collections and primitive types Potentially, all objects can be entered into collections because collections can accept elements of type Object and all classes are subtypes of Object. Great! But what about the primitive types: int, boolean, etc.? Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

44 Wrapper classes Primitive types are not objects types. Primitive-type values must be wrapped in objects to be stored in a collection! Wrapper classes exist for all primitive types: Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling simple typewrapper class intInteger floatFloat charCharacter...

45 Wrapper classes Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling int i = 18; Integer iwrap = new Integer(i); … int value = iwrap.intValue(); wrap the value unwrap it In practice, autoboxing and unboxing mean we don't often have to do this explicitly

46 Autoboxing and unboxing Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling private ArrayList markList; … public void storeMark(int mark) { markList.add(mark); } int firstMark = markList.remove(0); autoboxing unboxing

47 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). Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling