Workshop for CS-AP Teachers Chapter 1 Introduction to Object-Oriented Development

Workshop for CS-AP Teachers
Chapter 1
Introduction to Object-Oriented
Georgia Institute of Technology
Learning Goals
• Understand at a conceptual and practical
– What does object-oriented mean?
– Objects and classes
– Messages and methods
– Encapsulation and data hiding
Georgia Institute of Technology
What is Object-Oriented?
• This means that we
focus on the objects
not just the
Focus on
who (what objects?)
as well as
what (what do the
objects do?)
Georgia Institute of Technology
• Imagine that you are
put into a group to do
a job: say design and
sell t-shirts to raise
money for an
– You would want to
specify the tasks to be
– You would also want to
specify who will work
on each task
Georgia Institute of Technology
Task List
• Design T-Shirts
– What will people buy?
– What will look good?
– What would be too expensive?
• Make the T-Shirts
– Where to get them?
– How to add the design?
– How long will they take to
• Sell T-Shirts
– How much to sell them for?
– When and where to sell?
– How do you keep track of who
sold what and who ordered
Georgia Institute of Technology
Job List
• Designers
– Responsible for
designing the t-shirts
• Manufacturers
– Responsible for
making the t-shirts
• Sellers
– Responsible for selling
the t-shirts
Georgia Institute of Technology
Objects have Responsibilities
• An object-oriented design
– Determines the tasks to be done
– Determines what objects will be responsible
for each task
• No one object does everything
• Objects work together to accomplish tasks
– The assignment of responsibilities is the key
skill in object-oriented design
Georgia Institute of Technology
What is an Object?
• A person, place, or thing
– That knows something about
• Has data (attributes, fields)
• A cashier has a id, name, and a
– And can do something
• Has operations (methods)
• A cashier can total the items,
take payment, make change
Georgia Institute of Technology
What is a Class?
• The type of an object
– The way we classify
an object
• “The Idiot” by
Dostoevsky is a book
• “War and Peace” by
Tolstoy is a book
• Mary is a cashier
• Tasha is a cashier
• Grouping of objects
with the same data
and operations
Georgia Institute of Technology
Class: Example
• Mary is a cashier
• Tasha is a cashier
• Cashier is a class
– All cashiers have an id,
name and password
• Each will have a different id,
name, and password
– All cashiers can total an
order, take payment, make
Georgia Institute of Technology
Object Data
• Each object has its own
– Tasha’s id is 4 and
password is mhall
– Mary’s id is 3 and
password is smile4
• All cashier objects have
an id, name, and
• Changing Mary’s data
won’t affect Tasha’s data
Georgia Institute of Technology
Teaching Objects and Classes
• Point out various objects
in the room and ask what
“type” of thing are they.
• Ask what data is known
about each type and what
operations can objects of
that type do.
• Point out that there are
several objects of the
same “type”.
– How are they the same and
how different?
Georgia Institute of Technology
Find Object Types Exercise
• List the “types” of objects in this picture
Georgia Institute of Technology
History of Objects and Classes
• Plato’s Republic (~375 BC)
theory of forms
– Let us take any common
instance; there are beds and
tables in the world -- plenty of
them, are there not?
– Yes.
– But there are only two ideas
or forms of them -- one the
idea of a bed, the other of a
Georgia Institute of Technology
History of Inheritance
• Aristotle Parts of Animals (350 BC)
describes inheritance.
• Linnaeus’s Species Plantarum (1753)
applied inheritance systematically and is
the basis for modern botanical
Georgia Institute of Technology
• Object-oriented graphics editor
– Developed by Ivan Sutherland at MIT in 1963
– Allowed the creation of objects that could be
manipulated distinct from any other object.
– Allowed the user to define a "master drawing"
from which one could define a set of "instance
drawings ". Changes on the master drawing
would affect the instance drawings.
Georgia Institute of Technology
• Language for creating simulations
– Developed by Ole-Johan Dahl and Kristen Nygaard at
the Norwegian Computing Centre (NCC) in Oslo
between 1962 and 1967.
– Simula allowed one to define an activity from which
any number of working versions of that, called
processes could be created.
– Each of Simula's processes was a distinct object: It
had its own data and its own behavior, and no object
could mess with the data and behavior of another
object without permission.
Georgia Institute of Technology
• General purpose object-oriented
– Alan Kay led the group that created
Smalltalk at Xerox PARC which was
released in 1980
• This group also created the first personal
computer, graphical user interface, and
• Smalltalk was never a popular language
– But people who programmed in it loved it
Georgia Institute of Technology
Development of Smalltalk
– Alan’s background in biology and exposure to
SketchPad and Simula as a graduate student
made him think that complex software could
better be created when programming objects
were more like cells.
• Independent, indivisible, but able to interact with its
peers along standard mechanisms (such as
absorbing food, expelling waste, etc.)
• By combining thousands or more of these cells, we
can build very complex and robust systems that
can grow and support reuse.
Georgia Institute of Technology
• Developed by Bjarne Stroustrup at Bell
Labs in 1985
– created a highly-efficient version of Simula
by extending the C language
– very popular in the late 80s to 90s
– still popular for 3d graphics
Georgia Institute of Technology
– In 1991, Sun Microsystems began an internal
project to produce a language that could run
on intelligent consumer electronic devices
– James Gosling created the programming
language Oak for this project as a highly
portable, object-oriented programming
– Oak evolved into Java and was released in
– Very popular
Georgia Institute of Technology
C# (pronounced See-Sharp)
– Microsoft created language
• Anders Hejlsberg 2001
– Similar to Java
Garbage collection
Doesn’t compile to machine code
Single inheritance but multiple interfaces
Exception handling
– Closest to C++ in design
• Enumerations
– Goal of making it easier to create components
Georgia Institute of Technology
• Object-oriented development means
creating a simulation of the problem
– We need to know the objects in the problem
• So we can create software objects to represent
– We need to know the types of the objects
• So we can define the data and the operations for
all objects of that type
Georgia Institute of Technology
Classes Create Objects
• The class can be thought of
as a recipe, blueprint, or
• Many objects can be created
from one class
• Objects keep track of the
class that created them
– I am an object (instance) of
the Cookie class
Georgia Institute of Technology
Classes Define the Objects
• The computer doesn’t know what we
mean by a car or cashier
• We define the class Cashier so that the
computer will understand what a cashier
or bank account “is” and what it can “do”
– In the context of the problem we are trying to
• Then the computer can create objects
from the classes
Georgia Institute of Technology
• Pull out only the important details about
the thing we are simulating
– Cashiers have hobbies but we don’t need to
know about them
Georgia Institute of Technology
What does a Class Look Like?
• Usually the kewords public and class followed by the
class name
– The class name should be uppercase
• Next is the body of the class definition between open
and close curly braces
– The order of fields, contstructors, and methods doesn’t matter to
the computer
– But, it is good practice to keep them consistent
public class Name
///////// fields, constructors, methods, and inner classes
Georgia Institute of Technology
What do Objects Look Like?
• Objects are created
with space for their
• Object have a
reference to the
object that represents
the class
– Object of the class
Mary : Cashier
id = 3,
password = smile4
Tasha : Cashier
id = 4
password = mhall
Cashier : Class
Name = Cashier
Methods = totalOrder()
Georgia Institute of Technology
Software Objects are Models
• The objects we create
in software are
models of the
physical object
– We can’t stick a
person in our software
– We can create a
model of the person
with the information
we need to know for
that person for our
Georgia Institute of Technology
Creating Objects in Java
• To create an object in Java you ask the
class to create a new object
– Teacher unknown = new Teacher();
– Teacher barb = new Teacher(“Barb Ericson”);
• This creates the new object and calls a
constructor to initialize the object’s data
– public Teacher()
– public Teacher(String name)
Georgia Institute of Technology
Exercise: Create Objects
• Open DrJava and create several Picture
objects using
– Picture picture1 = new
– Picture picture2 = new
• Ask the pictures to show
Georgia Institute of Technology
What is a Picture?
• What data do you
think a picture object
• What things
(operations) can it
Georgia Institute of Technology
Picture Class
• Picture objects have the following data
– fileName
the name of the file
– bufferedImage
a BufferedImage for
holding the digitized picture information
• Picture objects have the following methods
– getWidth() the width in pixels
– getHeight() the height in pixels
– show()
show the picture
– getPixel(int x, int y) get a pixel object
Georgia Institute of Technology
Communicating Objects
• Objects in the
simulation need to
– They send each other
– Messages cause
methods (operations)
to be executed
– Objects can refuse to
do what is asked of
Georgia Institute of Technology
Clean your
room, please
Data Responsibility
• Objects are
responsible for their
• The data should not
be allowed to get into
an invalid state
– Like withdrawing more
money than is in a
back account
Georgia Institute of Technology
• Data and operations are combined in classes
• All changes to data should be done by methods
in the class
– Making sure that the data stays valid
– Data should be private
Georgia Institute of Technology
Why use Encapsulation?
• If something goes wrong we know where the
trouble is
– Some class didn’t protect the data or didn’t make sure
the data was valid
• If something changes it is easy to find the class
to fix
– If I need to add or change data the methods that work
on it are together in the class
• If you need a method it is easy to check if such a
method exists
Georgia Institute of Technology
Data Hiding
• In OO Programming we
hide data from objects in
other classes
– No direct changing of data
in objects of another class
• Objects send messages
asking for operations to
be done on the data
– They don’t need to know
how an object is going to
do something as long as
they do it
Georgia Institute of Technology
Encapsulation Exercise
Run the Customer class
Which class didn’t protect its data?
Fix the data by making it private
Change the Customer class to call the
public withdraw method
• What happens now when the pirate tries to
withdraw money from another account?
Georgia Institute of Technology
Simulation Example
• If you were developing
software for a doctors
office to track
appointments and
payment you would need:
– Objects that represent the
patients, doctors, and
payment information
– Classes that define
• Patient
• Doctor
• Payment
Georgia Institute of Technology
Creating the Simulation
• Find the objects in the
– What are the things doing
the work or being worked
• Determine the types of
the objects
– What classes do they
belong to?
• What data does each
object of the class have?
• What operations can each
object of the class do?
Georgia Institute of Technology
Coding and Running the Simulation
• Define the classes in
– Usually each class is
defined in a separate file
– The computer needs to
know what you mean by
the class
• In the main method
create objects to start the
– These objects can create
other objects
– Objects work together to
accomplish a task
Georgia Institute of Technology
Teaching Object Simulations
• For each situation ask students
what roles (objects) are needed
and pick students to do that role
• Role-play Situations
– Movie theater
• Goal: watch movie
– Doctor’s office
• Goal: feel better
– Concert
• Goal: listen to music
Georgia Institute of Technology
Simulation Exercise
• What were the objects involved in the
• How would you categorize the objects?
What are their “types” or classes?
• How many objects of each type do you
• What data did they need to keep track of?
• What things could they do?
Georgia Institute of Technology
Advantages to OO Development
• Improve Software Quality
– Understandability
• the program is a “simulation” of the domain
– Maintainability
• easier to find the code to change (encapsulated
• code is easier to read (inheritance, polymorphism)
– Improve Software Economics
• Build and deliver software faster that meets user
needs better
• Reuse code and designs
Georgia Institute of Technology
• Object-oriented programs are simulations
– Objects simulate the “real world” and interact to
accomplish a task
– Objects use messages to ask other objects to do
• Objects belong to classes
– An object is an instance of a class
– Classes describe the data and operations that all
objects of the class will have
– A class creates objects
• Objects are responsible
– They should control their data
Georgia Institute of Technology