1 Object Oriented Design and UML Class Relationships –Dependency –Aggregation –Interfaces –Inheritance Interfaces Reading for this Lecture: L&L 6.4 – 6.5.

Slides:



Advertisements
Similar presentations
Interfaces A Java interface is a collection
Advertisements

Inheritance Inheritance Reserved word protected Reserved word super
More Inheritance Abstract Classes Interfaces Briana B. Morrison CSE 1302C Spring 2010.
Inheritance. Extending Classes It’s possible to create a class by using another as a starting point  i.e. Start with the original class then add methods,
1 Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L 8.1 – 8.5.
Class Relationships. In systems with multiple classes, it can become difficult to keep track of relationships  e.g. the Student class requires the Course.
Chapter 5: Keyboard I/O & Simple GUI’s Copyright 2002, Matthew Evett. These slides are based on slides copyrighted by John Lewis and William Loftus, 2002,
ECE122 L16: Class Relationships April 3, 2007 ECE 122 Engineering Problem Solving with Java Lecture 16 Class Relationships.
Abstract Classes.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
Aalborg Media Lab 28-Jun-15 Software Design Lecture 7 “Object Oriented Design”
Interfaces A Java interface is a collection of constants and abstract methods with a name that looks like a class name, i.e. first letter is capitalized.
INF 523Q Chapter 5: Enhancing Classes. 2 b We can now explore various aspects of classes and objects in more detail b Chapter 5 focuses on: object references.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Object Oriented Design and UML
Writing Classes (Chapter 4)
CSE 1301 Lecture 11 Object Oriented Programming Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
© 2004 Pearson Addison-Wesley. All rights reserved November 9, 2007 Method Design & Method Overloading ComS 207: Programming I (in Java) Iowa State University,
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
CSE 1302 Lecture 7 Object Oriented Programming Review Richard Gesick.
1 Object Oriented Design and UML Class Relationships –Dependency –Aggregation –Inheritance Reading for this Lecture: L&L 6.4 – 6.5.
© 2004 Pearson Addison-Wesley. All rights reserved November 7, 2007 Interfaces ComS 207: Programming I (in Java) Iowa State University, FALL 2007 Instructor:
6. Object-Oriented Design Based on Java Software Development, 5 th Ed. By Lewis &Loftus.
6. Object-Oriented Design Based on Java Software Development, 5 th Ed. By Lewis &Loftus.
Programming in Java (COP 2250) Lecture 14 & 15 Chengyong Yang Fall, 2005.
Java Software Solutions Foundations of Program Design Sixth Edition by Lewis & Loftus Chapter 6: Object-Oriented Design.
Chapter 6 Object-Oriented Design. © 2004 Pearson Addison-Wesley. All rights reserved6-2 Object-Oriented Design Now we can extend our discussion of the.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
1 Enhanced Class Design -- Introduction  We now examine several features of class design and organization  that can improve reusability and system elegance.
Static class members.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Inheritance. Inheritance is a fundamental object-oriented design technique used to create and organize reusable classes Chapter 8 focuses on: deriving.
Chapter 8 Specialization aka Inheritance. 2 Inheritance  Review of class relationships  Uses – One class uses the services of another class, either.
Chapter 8 Inheritance. 2  Review of class relationships  Uses – One class uses the services of another class, either by making objects of that class.
1 Object-Oriented Design Now we can extend our discussion of the design of classes and objects Chapter 6 focuses on: software development activities determining.
Chapter 6 Object-Oriented Design Part 2. © 2004 Pearson Addison-Wesley. All rights reserved2/20 The this Reference The this reference allows an object.
1 Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L 9.1 – 9.4.
Side effects A side effect is anything that happens in a method other than computing and/or returning a value. Example: public class hello { public int.
1 Enhanced Class Design -- Introduction  We now examine several features of class design and organization that can improve reusability and system elegance.
1 Object-Oriented Design Now we can extend our discussion of the design of classes and objects Chapter 6 focuses on: software development activities determining.
Chapter 8 Inheritance 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All rights reserved.
Designing Classes Chapter 3. Contents Encapsulation Specifying Methods Java Interfaces – Writing an Interface – Implementing an Interface – An Interface.
Interfaces. In order to work with a class, you need to understand the public methods  methods, return types,…  after you instantiate, what can you do.
1 Lecture 8 b Data Structures b Abstraction b The “Structures” package b Preconditions and postconditions b Interfaces b Polymorphism b Vector class b.
© 2004 Pearson Addison-Wesley. All rights reserved November 12, 2007 Inheritance ComS 207: Programming I (in Java) Iowa State University, FALL 2007 Instructor:
Outline Software Development Activities Identifying Classes and Objects Static Variables and Methods Class Relationships Interfaces Enumerated Types Revisited.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Outline Creating Subclasses Overriding Methods Class Hierarchies Inheritance.
1 Chapter 4: Writing Classes  Chapter 4 focuses on: class definitions encapsulation and Java modifiers method declaration, invocation, and parameter passing.
2/23- Interfaces Reference: Java 6.5 and 9.3. PA-4 Review Requirements PA3 – Grading Key PA4 Requirements Doc.
© 2004 Pearson Addison-Wesley. All rights reserved November 2, 2007 Class Relationships ComS 207: Programming I (in Java) Iowa State University, FALL 2007.
Object-Oriented Design. Static Class Members Recall that a static method is one that can be invoked through its class name For example, the methods of.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
Chapter 5: Enhancing Classes
Interfaces November 6, 2006 ComS 207: Programming I (in Java)
Wrapper Classes ints, doubles, and chars are known as primitive types, or built-in types. There are no methods associated with these types of variables.
Passing Objects to Methods
Object Oriented Programming
Abstract Class As per dictionary, abstraction is the quality of dealing with ideas rather than events. For example, when you consider the case of ,
Lecture 16 - Interfaces Professor Adams.
Chapter 5: Enhancing Classes
CSE 501N Fall ‘09 13: Interfaces and Multiple Representation
Chapter 8 Inheritance.
Object Oriented Programming Review
2009 Test Key.
Object-Oriented Design Part 2
Presentation transcript:

1 Object Oriented Design and UML Class Relationships –Dependency –Aggregation –Interfaces –Inheritance Interfaces Reading for this Lecture: L&L 6.4 – 6.5

2 Class Relationships Classes in a software system can have various types of relationships to each other Three of the most common relationships: –Dependency: A uses B –Aggregation: A has-a B (as in B is an integral part of A) –Interface: A is B (adjective) or A is-a B (noun) –Inheritance: A is-a B We cover the first three now We cover inheritance later

3 Dependency A dependency exists when one class relies on another in some way, usually by invoking the methods of the other We've seen dependencies in previous examples and in Projects 1 and 2 We don't want numerous or complex dependencies among classes Nor do we want complex classes that don't depend on others A good design strikes the right balance

4 Dependency Some dependencies occur between objects of the same class A method of the class may accept an object of the same class as a parameter For example, the equals method of the String class takes as a parameter another String object boolean b = str1.equals(str2); This drives home the idea that the service is being requested from a particular object

5 Aggregation An aggregate is an object that is made up of other objects Therefore aggregation is a has-a relationship –A Car has a Chassis and has an Engine –A StudentBody has (a) Student object(s) In code, an aggregate object contains references to its component objects as instance data The aggregate object itself is defined in part by the objects that make it up This is a special kind of dependency – the aggregate usually relies for its existence on the component objects

6 Aggregation In the following example, a StudentBody object is composed of integral Student objects which then depend on Address objects A StudentBody has one or more Student (s) See StudentBody.java (page 312)StudentBody.java See Student.java (page 313)Student.java See Address.java (page 314)Address.java An aggregation association is shown in a UML class diagram using an open diamond at the aggregate end (Note difference from text diagram)

7 Dependency/Aggregation in UML StudentBody + main (args : String[]) : void + toString() : String Student - firstName : String - lastName : String - homeAddress : Address - schoolAddress : Address + toString() : String - streetAddress : String - city : String - state : String - zipCode : long Address Dependency shown with this symbol Aggregation shown with this symbol Please note differences from L&L Textbook Figure 6.2 This is a better representation of aggregation than the text.

Aggregation There are two ways to include the component objects in an object that is an aggregation –For one component (or a small constant number of components), use parameters in the constructor public Car(Chassis c, Engine e) {... } –For a large or indefinite number of components, define an add method to add them one at a time public void add(Student aStudent) {... } 8

9 Interfaces A Java interface is a collection of constants and abstract methods with a name that looks like a class name, i.e. the first letter is capitalized An interface is used to identify a set of methods that a class will implement An abstract method is a method header with a ; and without a method body, i.e. No {... } An abstract method can be declared using the modifier abstract, but because all methods in an interface are abstract, it is usually left off Methods in an interface have public visibility by default

10 Interfaces public interface Doable { // Doable constants public static final boolean DONE = true; public static final boolean NOT_DONE = false; // Doable required methods (signatures only) public void doThis(); public int doThat(); } interface is a reserved word None of the methods in an interface are given a definition {body} A semicolon immediately follows each method header

11 Interfaces An interface name can be either an adjective (like …able) or a noun (like a class name) An interface cannot be instantiated by itself A class implements an interface by: –using the Java reserved word implements –providing an implementation for each abstract method that is defined in the interface Classes that implement an interface can also implement their own methods and they usually do

12 Interfaces public class CanDo implements Doable { public void doThis () { // whatever } public int doThat () { // whatever } // etc. } implements is a reserved word Each method listed in Doable must be given a definition Doable is an adjective

13 Interfaces In UML CanDo > Doable + DONE : boolean + NOT_DONE : boolean + doThis( ) : void + doThat( ) : int + doThis( ) : void + doThat( ) : int + doNothing ( ) : void + doSomething ( ) : void Each method listed in Doable becomes a method of CanDo CanDo can have other methods of its own A “Generalization” arrow is used for “implements” (and also for “extends” later) Interface box looks like a class box with stereotype >

14 Interfaces In addition to (or instead of) abstract methods, an interface can contain constants When a class implements an interface, it gains access to all of its defined constants

15 Interfaces A class can implement multiple interfaces All interface names are listed in the implements clause The class must implement all methods in all interfaces listed in the header class ManyThings implements Interface1, Interface2,... { // all methods of all interfaces }

16 Interfaces The Java standard class library contains many interface definitions that allow other classes to treat your new class as if it were that interface Note: Comparable is an adjective in this case The Comparable interface contains one abstract method called compareTo, which can compare an object with another object of the same type We discussed the compareTo method of the String class previously The String class implements Comparable, giving us the ability to put strings in lexicographic order

17 The Comparable Interface Any class can implement Comparable to provide a mechanism for comparing objects of that type by providing a compareTo method The value returned from compareTo should be negative if obj1 is less than obj2, 0 if they are equal, and positive if obj1 is greater than obj2 When you design a class that implements the Comparable interface, it should follow this intent if (obj1.compareTo(obj2) < 0) System.out.println ("obj1 is ” + “less than obj2");

18 The Comparable Interface It's up to you as the programmer to determine what makes one object less than another For example, you may define the compareTo method of an Employee class to order employees by name (alphabetically), by salary, by employee number, or any other useful way The implementation of the method can be as straightforward or as complex as needed for the situation

19 Interfaces as “Reference Types” You could write a class that implements certain methods (such as compareTo ) without formally implementing the interface ( Comparable ) But, formally establishing the relationship between your class and an predefined interface allows Java to deal with an object of your class as if it were an object of a class corresponding to the interface name

20 Interfaces as “Reference Types” You can cast using the interface name in ( ) You can pass an object of CanDo class to a method as an object of Doable “class”. CanDo iCanDo = new CanDo();... Doable iAmDoable = iCanDo; // widening doIt(iCanDo);... public void doIt(Doable isItReallyDoable) {... // Yes, iCanDo is Doable! }

21 Interfaces as “Reference Types” When you are using an object “cast as” one of the interfaces that it implements, you are treating this object as if it were an object of a class defined by the interface You can only access the subset of the object’s methods that are defined in the interface CanDo methods, such as doNothing(), are not accessible when a CanDo object is cast as a Doable object because they are not defined in the Doable interface

22 Interfaces as “Reference Types” CanDo iCanDo = new CanDo(); iCanDo.doThis();// a Doable method iCanDo.doNothing();// a CanDo method // a widening conversion - no cast Doable iAmDoable = new CanDo(); // all Doable methods are available iAmDoable.doThis(); // CanDo method not accessible via Doable interface // iAmDoable.doNothing(); // would be compiler error // but it is really there - need a cast to call it ((CanDo)iAmDoable).doNothing();