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

advertisement
Workshop for CS-AP Teachers
Chapter 1
Introduction to Object-Oriented
Development
Georgia Institute of Technology
Learning Goals
• Understand at a conceptual and practical
level
– 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
procedures
–
–
–
–
Focus on
who (what objects?)
as well as
what (what do the
objects do?)
Georgia Institute of Technology
Example
• Imagine that you are
put into a group to do
a job: say design and
sell t-shirts to raise
money for an
organization
– You would want to
specify the tasks to be
done
– 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
make?
• 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
what?
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
itself
• Has data (attributes, fields)
• A cashier has a id, name, and a
password
– 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
change
Georgia Institute of Technology
Object Data
• Each object has its own
data
– 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
password
• 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
table.
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
nomenclature.
Mammal
Cat
Dog
Georgia Institute of Technology
SketchPad
• 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
Simula
• 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
Smalltalk
• General purpose object-oriented
language
– 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
networking
• 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
C++
• 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
Java
– 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
language.
– Oak evolved into Java and was released in
1995.
– 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
Simulation
• 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
them
– We need to know the types of the objects
(classes)
• 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
factory
• 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
solve
• Then the computer can create objects
from the classes
Georgia Institute of Technology
Abstraction
• 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
data
• Object have a
reference to the
object that represents
the class
– Object of the class
“Class”
Mary : Cashier
id = 3,
name=“Mary”
password = smile4
Tasha : Cashier
id = 4
Name=“Tasha”
password = mhall
Cashier : Class
Name = Cashier
Methods = totalOrder()
takePayment(payment)
makeChange()
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
task
Georgia Institute of Technology
Cashier
id
name
password
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(FileChooser.pickAFile());
– Picture picture2 = new
Picture(FileChooser.pickAfile());
• Ask the pictures to show
– picture1.show();
– picture2.show();
Georgia Institute of Technology
What is a Picture?
• What data do you
think a picture object
has?
• What things
(operations) can it
do?
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
communicate
– They send each other
messages
– Messages cause
methods (operations)
to be executed
– Objects can refuse to
do what is asked of
them
Georgia Institute of Technology
later
Clean your
room, please
Data Responsibility
• Objects are
responsible for their
data
• 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
Encapsulation
• 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
data
methods
data
message
Georgia Institute of Technology
methods
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
problem
– What are the things doing
the work or being worked
on?
• 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
Java
– 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
simulation
– 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
simulations?
• How would you categorize the objects?
What are their “types” or classes?
• How many objects of each type do you
need?
• 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
objects)
• 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
Summary
• 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
something
• 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
Download