CC1007NI: Further Programming Week 3 - 4 Dhruba Sen Module Leader (Islington College)

Slides:



Advertisements
Similar presentations
Final and Abstract Classes
Advertisements

Abstract Class and Interface
Module 8 “Polymorphism and Inheritance”. Outline Understanding Inheritance Inheritance Diagrams Constructors in Derived Classes Type Compatibility Polymorphism.
1 Chapter 6: Extending classes and Inheritance. 2 Basics of Inheritance One of the basic objectives of Inheritance is code reuse If you want to extend.
Further abstraction techniques Abstract classes and interfaces 5.0.
Inheritance Inheritance Reserved word protected Reserved word super
SE-1020 Dr. Mark L. Hornick 1 Inheritance and Polymorphism: Abstract Classes The “not quite” classes.
Chapter 10: Introduction to Inheritance
ACM/JETT Workshop - August 4-5, :Inheritance and Interfaces.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 1 Abstract Classes and Interfaces.
Further abstraction techniques Abstract classes and interfaces 1.0.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
CS 2511 Fall  Abstraction Abstract class Interfaces  Encapsulation Access Specifiers Data Hiding  Inheritance  Polymorphism.
Further abstraction techniques Abstract classes and interfaces 3.0.
8.1 Classes & Inheritance Inheritance Objects are created to model ‘things’ Sometimes, ‘things’ may be different, but still have many attributes.
Abstract Classes and Interfaces
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
CC1007NI: Further Programming Week 3 Dhruba Sen Module Leader (Islington College)
CC1007NI: Further Programming Week 2 Dhruba Sen Module Leader (Islington College)
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Java Classes, Interfaces, and Types 1.
MIT AITI 2002 Abstract Classes, Interfaces. Abstract Classes What is an abstract class? An abstract class is a class in which one or more methods is declared,
OOP (Java): Abstract/ OOP Objectives – –use a foxes-and-rabbits simulation to introduce abstract classes, interfaces, and multiple.
(C) 2010 Pearson Education, Inc. All rights reserved. Java™ How to Program, 8/e.
Lecture 9 Polymorphism Richard Gesick.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
Chapter 14 Abstract Classes and Interfaces. Abstract Classes An abstract class extracts common features and functionality of a family of objects An abstract.
Further abstraction techniques
JAVA Programming (Session 4) “When you are willing to make sacrifices for a great cause, you will never be alone.” Instructor: รัฐภูมิ เถื่อนถนอม
Interfaces F What is an Interface? F Creating an Interface F Implementing an Interface F What is Marker Interface?
Object Oriented programming Instructor: Dr. Essam H. Houssein.
Abstract Classes and Interfaces Week 17.  Computer simulations  Abstract methods  Abstract classes  Interfaces  Multiple inheritance Abstract Classes.
CS2 Module 26 Category: OO Concepts Topic: Interfaces Objectives –Interfaces.
Classes, Interfaces and Packages
Programming in java Packages Access Protection Importing packages Java program structure Interfaces Why interface Defining interface Accessing impln thru.
Access Specifier. Anything declared public can be accessed from anywhere. Anything declared private cannot be seen outside of its class. When a member.
// Java2101.java This program tests the features of the class. public class Java2101 { public static void main (String args[]) { System.out.println("\nJAVA2101.JAVA\n");
1 COS 260 DAY 21 Tony Gauvin. 2 Agenda Questions? 8 th Mini Quiz corrected –Good results 9 Th Mini Quiz Today –40 min covering Chap 9 Assignment 5 Due.
Object orientation and Packaging in Java Object Orientation and Packaging Introduction: After completing this chapter, you will be able to identify.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
POLYMORPHISM Chapter 6. Chapter Polymorphism  Polymorphism concept  Abstract classes and methods  Method overriding  Concrete sub classes and.
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)
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
COP INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces.
Further abstraction techniques Abstract classes and interfaces 6.0.
Inheritance a subclass extends the functionality of a superclass a subclass inherits all the functionality of a superclass don't reinvent the wheel – "stand.
11 Further abstraction techniques
Polymorphism in Methods
Modern Programming Tools And Techniques-I
Web Design & Development Lecture 9
University of Central Florida COP 3330 Object Oriented Programming
Inheritance and Polymorphism
Chapter 13 Abstract Classes and Interfaces
Lecture 23 Polymorphism Richard Gesick.
Interface.
Java Programming Language
Packages and Interfaces
Week 6 Object-Oriented Programming (2): Polymorphism
Interfaces.
COS 260 DAY 19 Tony Gauvin.
Java Inheritance.
COS 260 DAY 23 Tony Gauvin.
Fundaments of Game Design
Abstract Classes and Interfaces
Chapter 14 Abstract Classes and Interfaces
COS 260 DAY 23 Tony Gauvin.
Further abstraction techniques
Final and Abstract Classes
Presentation transcript:

CC1007NI: Further Programming Week Dhruba Sen Module Leader (Islington College)

What is Abstration? An abstract class is one that cannot be instantiated. All other functionality of the class still exists, and its fields, methods, and constructors are all accessed in the same manner. You just cannot create an instance of the abstract class.

What is Abstration? If a class is abstract and cannot be instantiated, the class does not have much use unless it is subclassed (Inheritance). This is typically how abstract classes come about during the design phase. A parent class contains the common functionality of a collection of child classes, but the parent class itself is too abstract to be used on its own.

Why abstraction? If you want a class to contain a particular method but you want the actual implementation of that method to be determined by child classes, you can declare the method in the parent class as abstract.

‘abstract’ Keyword Use ‘abstract’ keyword to declare a class or method as abstract. E.g. public abstract class Animal public abstract void eat()

Abstract methods Abstract method would have no definition, and its signature is followed by a semicolon, not curly braces as follows: E.g. public abstract double computePay();

Abstract methods Declaring a method as abstract has two results: The class must also be declared abstract. If a class contains an abstract method, the class must be abstract as well. Any child class must either override the abstract method or declare itself abstract.

Abstract methods A child class that inherits an abstract method must override it. If they do not, they must be abstract, and any of their children must override it. Eventually, a descendant class has to implement the abstract method; otherwise, you would have a hierarchy of abstract classes that cannot be instantiated.

Simulations Programs regularly used to simulate real-world activities They are often only partial simulations They often involve simplifications. –Greater detail has the potential to provide greater accuracy –Greater detail typically requires more resources

Predator-prey simulations There is often a delicate balance between species. A lot of prey means a lot of food. A lot of food encourages higher predator numbers. More predators eat more prey. Less prey means less food. Less food means...

The foxes-and-rabbits project

Main classes of interest Fox Simple model of a type of predator. Rabbit Simple model of a type of prey. Simulator Manages the overall simulation task. Holds a collection of foxes and rabbits.

Example of the visualization

Room for improvement Fox and Rabbit have strong similarities but do not have a common superclass. The update step involves similar-looking code. The Simulator is tightly coupled to specific classes. It ‘knows’ a lot about the behavior of foxes and rabbits.

The Animal superclass Place common fields in Animal : age, alive, location Method renaming to support information hiding: run and hunt become act. Simulator can now be significantly decoupled.

The act method of Animal Static type checking requires an act method in Animal. There is no obvious shared implementation. Define act as abstract: abstract public void act(List newAnimals);

Abstract classes and methods Abstract methods have abstract in the signature. Abstract methods have no body. The presence of at least one abstract method makes the class abstract. Abstract classes cannot be instantiated. Concrete (i.e. non-abstract) subclasses complete the implementation.

The Animal class public abstract class Animal { fields omitted /** * Make this animal act - that is: make it do * whatever it wants/needs to do. */ abstract public void act(List newAnimals); other methods omitted }

Review Abstract methods allow static type checking without requiring implementation. Abstract classes function as incomplete superclasses. No instances. Abstract classes support polymorphism.

Interfaces Multiple inheritance Main concepts to be covered

Abstract classes and methods Abstract methods have abstract in the signature. Abstract methods have no body. The presence of at least one abstract method makes the class abstract. Abstract classes cannot be instantiated. Concrete (i.e. non-abstract) subclasses complete the implementation.

The Animal class public abstract class Animal { fields omitted /** * Make this animal act - that is: make it do * whatever it wants/needs to do. */ abstract public void act(List newAnimals); other methods omitted }

Further abstraction

Selective drawing (multiple inheritance)

Multiple inheritance Having a class inherit directly from multiple ancestors. Java forbids it for classes. Java permits it for interfaces. No competing implementation.

Interface interface A Java programming language keyword used to define a collection of method definitions and constant values. It can later be implemented by classes by means of the "implements" keyword.

Interfaces as method specifications Interfaces specify method signatures only (like abstract methods.. The only difference is all the methods of an interface must be like this). Each method signature is followed by a semi-colon (;)

An Actor interface public interface Actor { fields omitted /** * Perform the actor's daily behavior. */ void act(List newActors); other methods omitted }

Features of interfaces All methods are abstract. There are no constructors. All methods are public. All fields are public, static and final.

Multiple interfaces Because interfaces simply specify method signatures, a single class can implement several different interfaces in order to ensure more methods can be implemented.

Classes implement an interface public class Fox extends Animal implements Drawable { any desired properties // implement required methods [modifiers] returnType methodName1(arguments) { executable code } any other desired methods } public class Hunter implements Actor, Drawable {... }

Implementing an Interface When a class implements an interface, it is essentially signing a contract. Either the class must implement all the methods declared in the interface and its superinterfaces, or the class must be declared abstract. The method signature in the class must match the method signature as it appears in the interface. A class that implements the ActionListener interface must contain the method ActionPerformed

Interfaces as types Implementing classes do not inherit code, but implementing classes are subtypes of the interface type. So, polymorphism is available with interfaces as well as classes.

Example Interfaces

Interfaces are useful for the following: Capturing similarities among unrelated classes without artificially forcing a class relationship Declaring methods that one or more classes are expected to implement Modelling multiple inheritance, a feature of some object- oriented languages that allows a class to have more than one superclass

THANK YOU.