Lecture 03

Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

CSE 422:

Advanced Software engineering


Lecture 3: Object Oriented
Concepts
Second semester 2020
What will you learn in this course?

• Review of Software and Software Engineering


• Object Orientation Concepts
• Basing Software Development on Reusable Technology
• Developing Requirements
• Modelling With Classes
• Modelling Classes Interactions and Behavior
• Using Design Patterns
• Focusing on Users and Their Tasks
• Architecting and Designing Software
• Testing and Inspecting to Ensure High Quality
What is Object Orientation?
•Procedural paradigm:
– Software is organized around the notion of procedures
– Procedural abstraction
• Works as long as the data is simple
– Adding data abstractions
• Groups together the pieces of data that describe some entity
• Helps reduce the system’s complexity.
– Such as Records and structures

•Object oriented paradigm:


– Organizing procedural abstractions in the context of data
abstractions
3
Object Oriented paradigm
•An approach to the solution of problems in
which all computations are performed in the
context of objects.
– The objects are instances of classes, which:
• are data abstractions
• contain procedural abstractions that operate on the
objects

– A running program can be seen as a collection of


objects collaborating to perform a given task
4
A View of the Two paradigms

5
Classes and Objects
•Object
– A chunk of structured data in a running software
system
– Has properties
• Represent its state

– Has behavior
• How it acts and reacts
• May simulate the behavior of an object in the real
world
6
Objects

7
Classes
•A class:
– A unit of abstraction in an object oriented
(OO) program
– Represents similar objects
• Its instances

– A kind of software module


• Describes its instances’ structure (properties)
• Contains methods to implement their behavior 8
Is Something a Class or an Instance?
– Something should be a class if it could have objects
– Something should be an object if it is clearly a single
member of the set defined by a class
•Film
– Class; instances are individual films.
•Film reel with serial number SW19876
– Instance of Film
•Science Fiction Film
– Class; instances include ‘Star Wars’

9
Instance Variables
•Variables defined inside a class corresponding
to data present in each instance
– Also called fields or member variables
– Attributes
• Simple data
• E.g. name, dateOfBirth

– Associations
• Relationships to other important classes
• E.g. supervisor, coursesTaken

11
Variables vs. Objects
•A variable
– Refers to an object
– May refer to different objects at different points in
time
•An object can be referred to by several different
variables at the same time

•Type of a variable
– Determines what classes of objects it may contain
12
Class variables
•A class variable’s value is shared by all instances
of a class.
– Also called a static variable
– If one instance sets the value of a class variable, then
all the other instances see the same value.
– Class variables are useful for:
• Default or ‘constant’ values (e.g. PI)
• Lookup tables and similar structures

Caution: do not over-use class variables


13
Operations and Methods

•Operation
– A higher-level procedural abstraction that
specifies a type of behaviour

– Independent of any code which implements that


behaviour
• E.g. calculating area (in general)

14
Operations and Methods

•Method
– A procedural abstraction used to implement the
behaviour of a class

– Several different classes can have methods with


the same name
• They implement the same abstract operation in
ways suitable to each class
• E.g. calculating area in a rectangle is done
differently from in a circle
15
Polymorphism
•A property of object oriented software by
which an abstract operation may be performed
in different ways in different classes.
– Requires that there be multiple methods of the
same name
– The choice of which one to execute depends on
the object.
– Reduces the need for programmers to code many
if-else or switch statements

16
Organizing Classes into Inheritance Hierarchies

•Super-class
– One class contains features common to a set
of subclasses
•Inheritance hierarchies
– Show the relationships among super-classes
and sub-classes
– A triangle shows a generalization
•Inheritance
– The implicit possession by all subclasses of
features defined in its super-classes
17
An Example Inheritance Hierarchy

•Inheritance
– The implicit possession by all subclasses of
features defined in its superclasses
18
The Is a Rule
•Always check generalizations to ensure they
obey the is a rule
– “A checking account is an account”

•Should ‘district ’ be a subclass of ‘Country’?


– No, it violates the is a rule

19
A possible inheritance hierarchy of
mathematical objects
MathematicalObject

Shape Point Matrix

Shape2D Shape3D

Ellipse Polygon Line Plane

Circle Quadrilateral

Rectangle 20
Make Sure all Inherited Features Make
Sense in Subclasses

21
Inheritance, Polymorphism and Variables

Chapter 2: Review of Object Orientation 22


Abstract Classes and Methods
•An operation should be declared to exist at the
highest class in the hierarchy where it makes sense
– The operation may be abstract (lacking
implementation) at that level
– If so, the class also must be abstract
• No instances can be created
• The opposite of an abstract class is a concrete class
– If a superclass has an abstract operation then its
subclasses at some level must have a concrete
method for the operation
• Leaf classes must have or inherit concrete methods for all
operations
24
• Leaf classes must be concrete
Overriding
•A method would be inherited, but a subclass
contains a new version instead
– For restriction
• E.g. scale(x,y) would not work in Circle
– For extension
• E.g. SavingsAccount might charge an extra fee
following every debit
– For optimization
• E.g. The getPerimeterLength method in Circle
is much simpler than the one in Ellipse
25
How a decision is made about which
method to run
• If there is a concrete method for the operation in
the current class, run that method.
• Otherwise, check in the immediate superclass to
see if there is a method there; if so, run it.
• Repeat step 2, looking in successively higher
superclasses until a concrete method is found and
run.
• If no method is found, then there is an error
In Java and C++ the program would not have compiled

26
Concepts that Define Object Orientation
•The following are necessary for a system to be OO
• Classes
– The code is organized using classes, each of which
describes a set of objects
• Abstraction
– Object -> something in the world
– Class -> objects
– Superclass -> subclasses
– Operation -> methods
– Attributes and associations -> instance variables

27
Concepts that Define Object Orientation

• Inheritance
• The mechanism where features in a hierarchy inherit from
superclasses to subclasses
• Polymorphism
• The mechanism by which several methods can have the same
name and implement the same abstract operation.
• Encapsulation
– Details can be hidden in classes
– This gives rise to information hiding:
• Modularity
– Code can be constructed entirely of classes
28
Overview of Java
•The next few slides will remind you of several
key Java features
– Not in the book
– See the web site:
http://www.site.uottawa.ca/school/research/llose
ng/supportMateria
– for
• A more detailed overview of Java
• Pointers to tutorials, books etc.

29
Casting
•Java is very strict about types
– If variable v is declared to have type X, you can
only invoke methods on v that are defined in X
or its superclasses
– If you know an instance of a subclass is stored,
then you can cast the variable to the subclass
• E.g. if I know a list i contains instances of String, I can
get the next element of its Iterator using:
(String)i.next();
• To avoid casting you could also have used templates::
a = ArrayList<String>;
i=a.iterator();
32
i.next()
Exceptions
•Anything that can go wrong should result in the
raising of an Exception
– Exception is a class with many subclasses for
specific things that can go wrong
•Use a try - catch block to trap an exception
try
{
// some code
}
catch (e)
{
// code to handle exception
} 33
Packages and importing
•A package combines related classes into
subsystems
– All the classes in a particular directory
•Classes in different packages can have the
same name
– Although not recommended
•Importing a package is done as follows:
import finance.banking.accounts.*;

34
Access control
•Applies to methods and variables
– public
• Any class can access
– protected
• Only code in the package, or subclasses can access
– private
• Only code written in the class can access
• Inheritance still occurs!
– (blank)
• Only code in the package can access
35
Programming Style Guidelines
•Remember that programs are for people to
read
– Always choose the simpler alternative
– Reject clever code that is hard to understand
– Shorter code is not necessarily better

•Choose good names


– Make them highly descriptive
– Do not worry about using long names
37
Programming style …
•Comment extensively
– Comment whatever is non-obvious
– Do not comment the obvious
– Comments should be 25-50% of the code

•Organize class elements consistently


– Variables, constructors, public methods then
private methods
•Be consistent regarding layout of code
38
Programming style …
•Avoid duplication of code
– Do not ‘clone’ if possible
• Create a new method and call it
• Cloning results in two copies that may both have bugs
– When one copy of the bug is fixed, the other may
be forgotten
•Adhere to good object oriented principles
– E.g. the ‘is a rule’

•Prefer private as opposed to public


39
Thanks

See you next week

You might also like