Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 1 Introduction to...
-
Upload
laurence-barrett -
Category
Documents
-
view
213 -
download
0
Transcript of Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 1 Introduction to...
Workshop for CS-AP Teachers
Chapter 1
Introduction to Object-Oriented Development
Learning Goals
• Understand at a conceptual and practical level– What does object-oriented mean?– Objects and classes– Messages and methods– Encapsulation and data hiding
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?)
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
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?
Job List
• Designers– Responsible for
designing the t-shirts
• Manufacturers– Responsible for
making the t-shirts
• Sellers– Responsible for selling
the t-shirts
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
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
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
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
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
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?
Find Object Types Exercise• List the “types” of objects in this picture
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.
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
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.
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.
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
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.
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
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
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
History Exercise
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
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
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
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
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}
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
Name = Cashier
Methods = totalOrder()
takePayment(payment)
makeChange()
Cashier : Class
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
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)
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();
What is a Picture?
• What data do you think a picture object has?
• What things (operations) can it do?
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
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
Clean your room, please
later
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
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
methodsmessage
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
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
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?
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
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?
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
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
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?
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
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