Agenda. Objects and classes Encapsulation and information hiding Documentation Packages

Similar documents
Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Outline. Inheritance. Abstract Classes Interfaces. Class Extension Overriding Methods Inheritance and Constructors Polymorphism.

CS-202 Introduction to Object Oriented Programming

Introduction to Inheritance

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

Chapter 5 Object-Oriented Programming

OBJECT ORİENTATİON ENCAPSULATİON

What is Inheritance?

Java Object Oriented Design. CSC207 Fall 2014

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Practice for Chapter 11

CMSC 132: Object-Oriented Programming II

COP 3330 Final Exam Review

G Programming Languages - Fall 2012

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

CH. 2 OBJECT-ORIENTED PROGRAMMING

1B1b Inheritance. Inheritance. Agenda. Subclass and Superclass. Superclass. Generalisation & Specialisation. Shapes and Squares. 1B1b Lecture Slides

Language Features. 1. The primitive types int, double, and boolean are part of the AP

Compaq Interview Questions And Answers

Polymorphism. return a.doublevalue() + b.doublevalue();

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix

Name Return type Argument list. Then the new method is said to override the old one. So, what is the objective of subclass?

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring

CMSC 132: Object-Oriented Programming II

Java: introduction to object-oriented features

Operators and Expressions

Inheritance, Polymorphism, and Interfaces

The Java Programming Language

Introduction to Programming Using Java (98-388)

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University

Example: Count of Points

Implements vs. Extends When Defining a Class

Lecture 4: Extending Classes. Concept

Programming overview

Java Fundamentals (II)

Argument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs.

CLASS DESIGN. Objectives MODULE 4

INHERITANCE. Spring 2019

Example: Count of Points

Inheritance. Inheritance allows the following two changes in derived class: 1. add new members; 2. override existing (in base class) methods.

Instance Members and Static Members

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

INHERITANCE & POLYMORPHISM. INTRODUCTION IB DP Computer science Standard Level ICS3U. INTRODUCTION IB DP Computer science Standard Level ICS3U

Inheritance (cont.) Inheritance. Hierarchy of Classes. Inheritance (cont.)

Inheritance -- Introduction

More About Objects. Zheng-Liang Lu Java Programming 255 / 282

Declarations and Access Control SCJP tips

Inheritance and Polymorphism

PROGRAMMING III OOP. JAVA LANGUAGE COURSE

Object Oriented Programming. Java-Lecture 11 Polymorphism

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Inheritance (continued) Inheritance

Java Programming Training for Experienced Programmers (5 Days)

CMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are "built" on top of that.

Advanced Programming - JAVA Lecture 4 OOP Concepts in JAVA PART II

HAS-A Relationship. If A uses B, then it is an aggregation, stating that B exists independently from A.

Method Overriding. Note that you can invoke the overridden method through the use of the keyword super.

15CS45 : OBJECT ORIENTED CONCEPTS

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

1 Shyam sir JAVA Notes

Subtype Polymorphism

A Short Summary of Javali

Exercise: Singleton 1

Conversions and Casting

Announcement. Agenda 7/31/2008. Polymorphism, Dynamic Binding and Interface. The class will continue on Tuesday, 12 th August

Unit3: Java in the large. Prepared by: Dr. Abdallah Mohamed, AOU-KW

Inheritance. Lecture 11 COP 3252 Summer May 25, 2017

Java. Classes 3/3/2014. Summary: Chapters 1 to 10. Java (2)

Distributed Systems Recitation 1. Tamim Jabban

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

Classes and Inheritance Extending Classes, Chapter 5.2

25. Generic Programming

Programming Languages and Techniques (CIS120)

Self-review Questions

Chapter 10 Classes Continued. Fundamentals of Java

a guide to an object oriented programming language Niket Sheth JAVA

Objects and Iterators

Object-Oriented Concepts

CO Java SE 8: Fundamentals

Advanced Placement Computer Science. Inheritance and Polymorphism

Programming Languages and Techniques (CIS120)

Computer Science 210: Data Structures

Introduction to Object-Oriented Programming

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson

Programming II (CS300)

Polymorphism and Inheritance

A final method is a method which cannot be overridden by subclasses. A class that is declared final cannot be inherited.

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

Inheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L

Universe Type System for Eiffel. Annetta Schaad

Java Primer 1: Types, Classes and Operators

ITI Introduction to Computing II

Chapter 11 Inheritance and Polymorphism. Motivations. Suppose you will define classes to model circles,

Object-Oriented Programming

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018

Java Magistère BFA

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2)

CSCI-142 Exam 1 Review September 25, 2016 Presented by the RIT Computer Science Community

Casting -Allows a narrowing assignment by asking the Java compiler to "trust us"

Transcription:

Preliminaries II 1

Agenda Objects and classes Encapsulation and information hiding Documentation Packages Inheritance Polymorphism Implementation of inheritance in Java Abstract classes Interfaces Generics 2

Desirable qualities of software systems Usefulness Timeliness Reliability Maintainability Reusability User friendliness Efficiency Not all these qualities are attainable at the same time, nor are they of equal importance. 3

Object-oriented programming Focuses primarily on Reusability Maintainability Maintainability is simplified by Flexibility (aspects are easily changeable) Simplicity Readability 4

Software development The real world System Abstraction Interpretation Model Software system Algorithms Abstraction: only essential and relevant parts are captured, others are ignored 5

Basic concepts in object-oriented programming Object: Interpretation in the real world: An object represents anything in the real world that can be distinctly identified Representation in the model: An object has an identity, a state, and a behavior 6

State and behavior The state of an object is composed of a set of fields, or attributes. Each field has has a name, a type, and a value. The behavior of an object is defined by a set of methods that may operate on the object. In other words, a method may access or manipulate the state of the object. The features of an object refer to the combination of the state and the behavior of the object. 7

Classes Class: Interpretation in the real world: A class represents a set of objects with similar characteristics and behavior. These objects are called instances of the class. Representation in the model: A class characterizes the structure of states and behaviors that are shared by all its instances. 8

An example of a class class Point {!// Class name!!!! int x, y;!!// Fields!! void move(int dx, int dy) { // Method!! x += dx;!!!!! y += dy;!!!!!! }!!!!!!!! }! A class is a template, blueprint, that defines what an object's fields and methods will be. 9

A simple example 10

A view of the accessibility 11

Using the class 12

javadoc for the class 13

14

Constructors!!!public class Point {! int x, y;!! public Point() {!// no-arg constructor!! x = 0; y = 0;!! }!! public Point(int x0, int y0) {!! x = x0; y = y0;!!!}! }! Constructors may be overloaded: A class may have several constructors, if only they have a different number of parameters, or their types differ. 15

Creation of Point objects Point p1 = new Point();!! Point p2 = new Point(13, 17);! If no constructor is provided for a class, a default no-arg constructor with an empty body is provided implicitly. 16

17

The this reference The keyword this may be used inside an instance method or constructor to denote the receiving instance of the call. Example of use: public class Point {! int x, y;!! public Point(int x, int y) {! this.x = x; this.y = y;! }! }! Allows access to fields shadowed (hidden) by parameters. 18

Passing this as a parameter class Line {! Point p1, p2;!! public Line(Point p1, Point p2) {! this.p1 = p1; this.p2 = p2;! }! }! public class Point {!!!!!!!int x, y;!!!!!!!!!!!!public Line connect(point otherpoint) {!! return new Line(this, otherpoint);!}!!!!!!!! }! 19

Dealing with aliasing public class Point {! public Line connect(point otherpoint) {! if (this == otherpoint)! return null;! return new Line(this, otherpoint);! }! }! 20

The this shorthand for constructors Many classes have multiple constructors that behave similarly. We can use this inside a constructor to call one of the other constructors. Example: public Date() {!! this(1, 1, 2010);!!}! The call to this must be the first statement in the constructor. 21

The instanceof operator The instanceof operator performs a runtime test of class membership. The result of exp instanceof ClassName! is true if exp is an instance of ClassName, and false otherwise. If exp is null, the result is always false. 22

Static fields and methods A static field is used when we have a variable that all the instances of the same class need to share. Typically, this is a symbolic constant, but need not be. A static method is a method that does not need a controlling object, and thus is typically called by supplying the class name in stead of the controlling object. Static fields and methods are called class fields and class methods, respectively. Non-static fields and methods are called instance fields and instance methods, respectively. 23

24

Static initializers Static fields are initialized when the class is loaded. Occasionally, we need a complex initialization. Such an initialization may be performed in a block preceded by the keyword static. The block must follow the declaration of the static field. 25

26

Packages Packages are used to organize similar classes. A package is a collection of related classes, interfaces, or other packages. Package declaration is file based; that is, all classes in the same source file belong to the same package. The name of the package may be given in the beginning of the source file:!!package PackageName;! 27

An example package The source file Point.java:!!package geometry;!!!public class Point {!! int x, y;!! //...!!}!! The source file Line.java:!!package geometry;!!!public class Line {!! Point p1, p2;!!}! 28

Examples of application of the package (1) Using the fully qualified name:!!!!!!!import geometry;!!!!!!!geometry.point p = new geometry.point(3, 4);!! (2) Importing the class and using the simple class name:!!!!import geometry.point;!!!!!!!!point p = new Point(3, 4);!! (3) Importing all classes: import geometry.*;!!!!!!!!!point p1 = new Point(3, 4),!!!!!! p2 = new Point(6, 9);!!!!!!!Line l = new Line(p1, p2);! 29

Packages and directory structure Use of a package requires a directory structure that corresponds to the name of the package. Example: The package dk.ruc.jdisco! must be placed in the directory dk/ruc/jdisco 30

Inheritance 31

Inheritance Inheritance is the fundamental object-oriented principle that is used to reuse code among related classes. Inheritance models the IS-A relation. Example: class ColoredPoint extends Point {!! Color color;! }! Point! ColoredPoint! int x! int y! void move!! Color color! 32

Inherence terminology A class C2 is said to inherit from another class C1, if all instances of C2 are also instances of C1. C1 C2 C2 is said to be a subclass of C1. C1 is said to be a superclass of C2. 33

Point! Interpretations of inheritance ColoredPoint! A subclass is an extension of its superclass. A subclass is a specialization of its superclass. A superclass is a generalization of its subclasses. 34

35

// grade point average! 36

37

38

39

40

Constructors for subclasses import java.awt.color;!!!!!!!!!!!!!!!!! public class ColoredPoint extends Point {!!!!!!public Color color;!!!!!!!!!!!!!!!!!!public ColoredPoint(int x, int y, Color color) {!! super(x, y); // must be the first statement! this.color = color;!}!!!public ColoredPoint(int x, int y) {! // black point!!! this(x, y, Color.black); // must be the first statement!}!!!public ColoredPoint() {!!! color = Color.black; // invokes super() implicitly!}!!!!!!!!!! }! 41

42

43

Single inheritance In Java, a class may inherit from at most one superclass. C1! C1a! C1b! C2a! C2b! C2! C3! 44

Class Object In Java, all classes are organized in a hierarchy (tree) that has the class Object as root. All classes, except Object, has a unique superclass. If no superclass is specified for a class, then Object is its superclass. 45

Class Object public class Object {! public String tostring();! public boolean equals(object obj);! public int hashcode();! protected Object clone();!!...! }! 46

Polymorphic assignment Rule of assignment: The type of the expression at the right-hand side of an assignment must be a subtype of the type at the lefthand side of the assignment. Person p = new Person(...);!!!!! Student s = new Student(...);!!! Employee e = new Employee(...);! p = s;! p = p;! s = e;! e = p;!!// ok!!// ok!!// compilation error!!// compilation error! Polymorphic (from Greek): having many forms 47

Type conversion (casting) The rule of assignment is checked at compile time.!e = p;!!// compilation error! The rule may be satisfied by narrowing the type at the right-hand side of the assignment: e = (Employee) p;!!// explicit cast, ok! The validity of an explicit cast is always checked at run time. If the cast is invalid, a ClassCastException is thrown. 48

Overriding methods Methods in a superclass may be overridden by methods defined in a subclass. Overriding refers to the introduction of an instance method in a subclass that has the same name, same signature, and a type-compatible return type of a method in the superclass. Implementation of the methods in the subclass replaces the implementation in the superclass. class Shape {! public String tostring() {! return "Shape";! }! }!! class Line extends Shape {! Point p1, p2;!! public String tostring() {! return "Line from " + p1 + " to " + p2;! }! }! 49

@Override In Java 5, the annotation @Override forces the compiler to check that a method is overridden.! class Line extends Shape {! @Override! public String tosting() {!...! }! }! Misspelling The compiler prints out the error message method does not override a method from its superclass! @Override! ^! 50

Polymorphic method invocation Which implementation of a overridden method will be invoked depends on the actual class of the object referenced by the variable at run time, not the declared type of the variable. This known as dynamic binding. Example: Person p;!!!p = Math.random() > 0.5? new Student(...)!! : new Employee(...);!!!System.out.println(p.toString());! 51

52

Field and method modifiers public!!!!!!!!!!!!!!!!the feature is accessible to any class. private!!!!!!!!!!!!!!!!the feature is only accessible by the class itself.! protected!!!!!!!!!!!!!!the feature is accessible by the class itself, all its subclasses, and all the classes within the same package. Neither public, private, nor protected! The feature is accessible by all the classes in the same package. final A final field has a constant value, which may not be changed.!!!!a final method may not be overridden in subclasses. static!!!!!!!!!!!!!!!!a static field is shared by all instances of the class. A static method accesses only static fields. 53

Design of hierarchies 54

55

56

57

Abstract methods and classes An abstract method is a method that declares functionality that all derived class objects must eventually implement. In other words, it says what these objects can do. However, it does not provide a default implementation. A class that has a least one abstract method is an abstract class. Java requires that abstract classes explicitly be declared as such (using the keyword abstract). Any attempt to construct an instance of an abstract class is illegal. 58

59

Interfaces An interface can be thought of as a special form of class, which declares only the features to be supported by the class. Java interfaces provide no implementation. Implementation is deferred to classes that implement the interfaces. Interface features can be either abstract methods or constants (that is, static and final fields). All features are public. Like abstract classes, an interface may not have instances. 60

Implementation of interfaces A class that implements an interface provides implementation for the abstract methods declared in interface by overriding those methods. interface Drawable {! void draw(graphics g);! }! public class Line implements Drawable {! Point p1, p2;!! public void draw(graphics g) {! g.drawline(p1.x, p1.y, p2.x, p2.y);! }! }! 61

Extending and implementing interfaces Classes that implement an interface must provide implementations of all methods of the interface (unless the class itself should be abstract). An interface may inherit from one or more interfaces but not from a class. Java allows only single inheritance for class extension but multiple inheritance for interface extension and implementation. 62

Multiple interface implementations interface Movable {! void move(int dx, int dy);! }! public class Line implements Drawable, Movable {! Point p1, p2;!! public void move(int dx, int dy) {! p1.move(dx, dy);! p2.move(dx, dy);! }!! public void draw(graphics g) {! g.drawline(p1.x, p1.y, p2.x, p2.y);! }! }! 63

Contract of the method compareto: Result < 0, if this precedes other; Result = 0, if neither this precedes other, nor other precedes this; Result > 0, if other precedes this. 64

65

Checked exception: Must be caught or declared in the throws clause 66

67

Generics 68

Using Object for genericity Generic: broadly covering 69

70

71

Wrapper classes Because in Java primitive types are not objects, wrapper classes are provided to wrap the values of primitive types into objects when needed. Each primitive type has a corresponding wrapper class. Primitive type Wrapper class boolean!!boolean! byte!!!byte! char!!!character! double!!!double! float!!!float! int!!!!integer! long!!!long! short!!!short! Each wrapper object is immutable (meaning its state can never change), and stores one primitive value that is set when the object is constructed. 72

Boxing conversions Automatic conversion of a value of a primitive type to an instance of a wrapper class is called auto-boxing. Integer val = 7; is equivalent to Integer val = new Integer(7);! Automatic conversion of an instance of a wrapper class to a value of a primitive type is called auto-unboxing. int x = val; is equivalent to int x = val.intvalue();! 73

74

75

76

Generics in Java 5 Generics allow a type or method to operate on objects of various types while providing compile-time type safety. In Java 5, classes, interfaces and methods may be declared with one or more type parameters. Benefits: Compile-time type safety Greater readability (unnecessary casting is avoided) 77

A generic ArrayList public class ArrayList<E> implements List {! public boolean add(e o);! public E get(int i);! public boolean addall(collection<? extends E> c);!...! }! The name of the type parameter, here E, may be chosen freely. Alternative: ElementType. The notation <? extends E> denotes an arbitrary subtype of E. The wildcard character? stands for an unknown type. 78

Example of application ArrayList<String> names = new ArrayList<String>();!! names.add("barack Obama");!!// OK! names.add(new Integer(21));!// Compile-time error!! String name = names.get(0);!// OK without cast!! for (String name : names)!!system.out.println(name.touppercase());! 79

80

Generic Comparable interface 81

Generic collections are not covariant Covariance: Type compatibility ArrayList<Square> is not type compatible with ArrayList<Shape>. (In contrast, Square[] is type compatible with Shape[]. Arrays are covariant.) 82

Use of wildcards with bound 83

Generic static method The type parameters in a generic method precede the return type. 84

The compiler cannot prove that the call to compareto at line 6 is valid. 85

Using type bounds 86

Because we cannot generate arrays of generic objects, we must create an array of Object and use a typecast. 87

88

The Comparator interface 89

90

91

Static nested class 92

Local inner class Non-static nested classes are called inner classes. 93

Anonymous inner class 94

95