OOSummary - Mathematical & Computer Sciences

advertisement
Software Engineering Foundations
Summary
Object Oriented Concepts
Dept of
Computer
Science
13/04/2015
Monica Farrow EM G30
email : M.Farrow@hw.ac.uk
Material available on Vision
F21SF1 Maps End
1
Key OOP concepts

Basic OOP





OOP, objects, classes
Encapsulation and data/information hiding
Coupling and cohesion
Static
Inheritance




Superclasses and subclasses
Abstract methods and classes
Interfaces
Polymorphism, overloading and overriding.
13/04/2015
2
OOP

OOP – object oriented programming


Read the java tutorial


http://docs.oracle.com/javase/tutorial/java/concepts/
Here is a good summary


A style of designing programs based on ‘objects’
http://www.cis.upenn.edu/~matuszek/cit5912011/Pages/o-o-concepts.html
Also

http://www.ntu.edu.sg/home/ehchua/programming/java
/J3a_OOPBasics.html
13/04/2015
3
Objects


An object is often a real-world object such as a
car.
An object has



state (attributes/properties/data/fields)
e.g. model name, tank size, fuel in the tank
And


Behaviour (operations/functions/methods)
e.g.



How far can it travel on a full tank
Whether the tank is empty or not
The tank can be filled (amount of fuel in the tank altered)
13/04/2015
4
Class

A class is a template for an object


It describes the attributes (instance variables) and
operations (methods) for any object of the class
A class doesn’t define actual objects
Car
model : String
tankSize : int
fuelInTank : double
getModel() : String
getTankSize() : int
setFuelInTank (double fuel): void
Etc etc
13/04/2015
5
Objects (again)


An object is an instance of the class.
There can be many objects of a class


E.g. Person -> Monica Farrow, Hamish Taylor, etc etc
Objects can be instantiated (created)
13/04/2015
6
How a program works
https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp3_OOP.html
13/04/2015
7
Encapsulation



In English ‘encapsulate’ means to enclose as if in a
capsule.
In OOP, it means that the attributes and
operations for objects of a class are held together.
http://www.c-sharpcorner.com/UploadFile/e881fb/learn-object-orientedprogramming-using-C-Sharp-part-5/Images/Encapsulation.jpg
13/04/2015
F21SF1 Maps End
8
Data hiding / Information hiding

Encapsulation enables data hiding, also called
information hiding.

The internal state of the object (the instance variables)
are hidden from objects of other classes.


These variables are then accessible by providing
accessor (‘get’) methods


Their access modifier is private
Their access modifier is public
Similarly, they can be modified by providing mutator
(‘set’) methods

13/04/2015
Their access modifier is public
F21SF1 Maps End
9
Using information hiding

The objects pass messages to each other using
the public methods.



The method signature is known (method name,
parameters, return type)
This is the interface
The implementation details (what the body of
the code does) is hidden, encapsulated within the
class
13/04/2015
F21SF1 Maps End
10
Coupling

Coupling is about the inter-connected-ness of
different classes.


Loose coupling means that changes in one class should
not usually require changes in other classes.
Information hiding supports loose coupling

E.g. change the way that a name is stored inside the
class, from a single String to 2 Strings for first names
and last names



Change the instance variables and the public method bodies
Do NOT change the method signatures (the public interface)
The classes using the methods do not need altering.
13/04/2015
F21SF1 Maps End
11
Cohesion


Cohesion is about a class having responsibility for
set of closely related tasks.
E.g.



Put a method to get how far a car can travel inside the
Car class
Put a method to get the initials inside the Name class
Don’t put lots of methods to manipulate the owner
name string inside a Car class – they’re not about cars.
13/04/2015
F21SF1 Maps End
12
Coupling and cohesion



An OOP program should have loose coupling and
high cohesion.
Separating entities into separate logical units
makes them modular, easier to code, understand,
analyze, test, and maintain.
The logical units can also be re-used in other
programs.
13/04/2015
F21SF1 Maps End
13
Static variables and constants


A class may contain static variables or constants.
A static constant has the same value for all objects
of the class and never changes E.g.



the number of days in a week
the number of holidays that all Employees can take (if
this will NOT change)
A static variable has the same value for all objects
of the class and might change during the program
run E.g.

number of holidays that all Employees can take (if this
might be changed during a program run)
13/04/2015
F21SF1 Maps End
14
Static methods

A class may contain static methods





These can only access static variables, constants and
other static methods
They often provide useful functionality
They do NOT use instance variables or non-static
methods
E.g. method to return the days of the week
E.g. Math.round, String.format, main method
13/04/2015
F21SF1 Maps End
15
Inheritance

A class can



Get some characteristics (instance variables, methods)
from a parent or superclass. A subclass extends a
superclass. A subclass is a superclass.
Provide its own characteristics specific to itself. It is the
child or sub-class.
E.g.


Superclass Shape specifies the colour. All shapes have a
colour.
Subclass Circle specifies radius, subclass Square
specifies side. These attributes are specific to Circle and
Square.
13/04/2015
F21SF1 Maps End
16
Inheritance
Shape
colour:String
getColour() : String
setColour (String c) :void
Circle
Square
radius:double
side:double
getRadius() : double
getSide() : double
13/04/2015
17
Object class


The Object class is the superclass for all classes
It contains default toString and equals methods,
based only upon class name and location in
memory.
Object
toString() : String
equals(o : Object) : boolean
Shape
Circle
13/04/2015
Square
18
Overriding



Subclasses often provide their own toString and
equals methods.
This is called overriding, the method in the
subclass is used in preference to the method in
the superclass.
The method in the superclass can be called,
using ‘super’ e.g. super.toString().
13/04/2015
19
Overloading

Overloading is using the same operation name
with a different purpose. E.g.



System.out.println(5); //an int
System.out.println(“Hello”); // a String
Overloading is also used for the + operator in
java


int y = 3; int z = y + 2;
String s = “Hel” + “lo”;
13/04/2015
20
Polymorphism


Polymorphism means ‘changing form’
In Java, this means


Overloading – same method name, different
parameters
Overriding – same method name, different subclass
13/04/2015
21
Abstract methods



An abstract method contains no code
An abstract method is a method signature,
defining the interface for a method which must
be supplied by the subclass.
E.g.


Shape superclass could define an abstract method
getArea().
The implementation is in each subclass.
13/04/2015
22
Abstract class

An abstract class contains




Some abstract methods. No implementation. E.g.
Shape getArea()
Some concrete variables and methods, including the
implementation. E.g. Shape colour, getColour().
You can NOT call the constructor of an abstract
class directly
You can create (instantiate) objects of the
subclass. Their constructors contain a call to the
superclass constructor (super() )
13/04/2015
23
Interface

An interface is like an abstract class without the
concrete parts. An interface is a
specification without implementation.




All variables are static
All methods are abstract
A class can implement an interface.
This means that the class MUST provide
(implement) all methods defined by that
interface (e.g. actionPerformed in GUIs)
13/04/2015
24
Multiple inheritance



In Java, a subclass can only extend one
superclass.
In Java, a class can extend any number of
interfaces.
E.g.

class Class extends Superclass
implements Interface1, Interface2, .....
13/04/2015
25
Download