Top Banner
1 Vladimir Misic: vm(at)cs.rit.edu Object-Oriented Programming Basics Reading for this week : • BG 1-4.10 • UNIX 1,2,4,9 • JAVA 0,1 BG = Beginner’s Guide UNIX = Harley Hahn’s Student guide to Unix, Harley Hahn JAVA = An Introduction to Object Oriented Programming with Java, Thomas Wu
52

Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

Mar 31, 2015

Download

Documents

Coleman Judge
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

1Vladimir Misic: vm(at)cs.rit.edu

Object-Oriented Programming Basics

Reading for this week†:

• BG 1-4.10

• UNIX 1,2,4,9

• JAVA 0,1

†BG = Beginner’s Guide

UNIX = Harley Hahn’s Student guide to Unix, Harley Hahn

JAVA = An Introduction to Object Oriented Programming with Java, Thomas Wu

Page 2: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

2Vladimir Misic: vm(at)cs.rit.edu

How can one design a program?

• Top-down structured design: uses algorithmic decomposition where each module denotes a major step in some overall process

• Object-oriented design: divides the problem into a set of objects that interacts to solve the problem. Your program’s properties and behaviors are modelled based upon real objects like cars, books, houses, etc.

Page 3: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

3Vladimir Misic: vm(at)cs.rit.edu

Why OOD?

• Software is complex (too many people is doing too many things – the mess is inevitable )

• One of the main goals in programming is to avoid the redundancy and objects can help to do this (inheritance)

• Objects can help increase modularity through data hiding (encapsulation)

Page 4: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

4Vladimir Misic: vm(at)cs.rit.edu

OK, but what is object ?

• An object is a thing, either tangible or intangible.

• An object-oriented program consists of many objects.

• An object is composed of identity, state (attributes, data, and their current values) and behavior (operations) .

• Identity? State? Behavior? Too many new expressions – I’ll get a headache!!!

Page 5: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

5Vladimir Misic: vm(at)cs.rit.edu

Identity, State, Behavior

• Identity is the property of an object that distinguishes it from all other objects.

• The failure to recognize the difference between the name of the object and the object itself is the source of many errors in object-oriented (OO) programming.

Page 6: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

6Vladimir Misic: vm(at)cs.rit.edu

Identity, State, Behavior

• The state of an object encompasses all of the (static) properties of the object plus the current (dynamic) values of each of these properties

• A property is an inherent or distinctive characteristic, trait, quality, or feature that contribute to making an object uniquely that object

• We will use the word attribute, or data member, to refer to the state of an object

Page 7: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

7Vladimir Misic: vm(at)cs.rit.edu

Examples of State

• Properties– Elevators travel up or down

– Vending machines accept coins

– Clocks indicate the current time

• Values– Current floor

– Number of coins deposited

– The number of minutes since the last hour

Page 8: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

8Vladimir Misic: vm(at)cs.rit.edu

Identity, State, Behavior

• Behavior is how an object acts and reacts, in terms of state changes and interactions with other objects.

• An operation is some action that one object performs upon another in order to elicit a reaction.

• We will use the word method to describe object behavior in java.

• Invoking a method causes the behavior to take place.

Page 9: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

9Vladimir Misic: vm(at)cs.rit.edu

Objects and Classes – graphical representation

• A graphical representation of an object:

< Object name >

• A graphical representation of a class:

< Class name >

Page 10: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

10Vladimir Misic: vm(at)cs.rit.edu

Object example

Audi 6 BMW Z3 Corvette

• Notice that all objects are of the same type. All objects are cars!

Page 11: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

11Vladimir Misic: vm(at)cs.rit.edu

Classes

• Classes are the definitions (or blueprints) used to create objects. I’d say: descriptions of objects.

• To make a car the manufacturer must first have a design from which to build the first car. Then, once all the problems are worked out, the design is used to build all the cars of that model.

Page 12: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

12Vladimir Misic: vm(at)cs.rit.edu

Objects

• An object is an instance of a class.

• If we have a class definition called Car, then we can think of Audi, BMW, and Corvette as each being an instance (object) of the class Car, i.e., they are each a type of car.

Page 13: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

13Vladimir Misic: vm(at)cs.rit.edu

Object example

Audi 6 BMW Z3 Corvette

• Notice that all objects are of the same type. All objects are cars!

Car Car Car

Page 14: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

14Vladimir Misic: vm(at)cs.rit.edu

Classes and Objects

• An object is an instance of exactly one class!!!– Corvette can not be an instance of a car class and an instance of a

plane class at the same time.

• An instance of a class, an object, belongs to that particular class.– A Corvette is a car Corvette belongs to the class Car.

Page 15: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

15Vladimir Misic: vm(at)cs.rit.edu

Classes

• Once a class is defined you can create as many instances of the class (objects from the class) as you would like.

• Once a blue print is completed for the 2003 Porsche 911, Porsche will use an assembly line to build as many instances of the 2003 Porsche 911 as they wish.

Page 16: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

16Vladimir Misic: vm(at)cs.rit.edu

Class car and objects- graphically

Audi 6 BMW Z3 Corvette

Car Car Car

CarThis line shows an

instance-of relationship.

Page 17: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

17Vladimir Misic: vm(at)cs.rit.edu

Defining a class

• Properties are variables which describe the essential characteristics of an object.• Properties of a car: color, model, make, how many doors,

transmission type, direction of movement, etc.

• Behaviors are methods that describe how the object behaves and how the properties may be modified. • Behavior of a car: braking, changing gears, opening doors, moving

forwards or backwards, etc.

Page 18: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

18Vladimir Misic: vm(at)cs.rit.edu

Defining a class

Behavior or Method 1

Behavior Behavior or or

Method 4 Method 2

Behavior or Method 3

Properties

or

Instance Variables

Page 19: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

19Vladimir Misic: vm(at)cs.rit.edu

Instance variables

• The class definition will include parameter definitions (properties) that represent data about a particular object, instance variables.

• Example, Jessica's car may have 4 gallons of gas in it while Clint's car has 10 gallons.

• The amount of gas in each car may change without affecting the amount of gas in the any other cars.

• All instances (objects) of a class will have a set of instance variables that are specific to that individual object.

• The combination of the values of these instance variables is known as the object’s state.

Page 20: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

20Vladimir Misic: vm(at)cs.rit.edu

Instance variables

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

Page 21: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

21Vladimir Misic: vm(at)cs.rit.edu

Class variables

• The class definitions may also include parameter definitions that represent data that is shared by all class instances (objects), called class variables.

• In the case of the car class, we will define a maximum allowed speed, by the law (variable LMaxSpeed). This will be the same for each individual car (that’s why your car have those annoying speed limiters ).

Page 22: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

22Vladimir Misic: vm(at)cs.rit.edu

Class variables

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

LMaxSpeed=155

Page 23: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

23Vladimir Misic: vm(at)cs.rit.edu

Class variables

• Class variables may also be used to keep track of things such as how many instances of a class exist.

• Example: let’s create a counter the records how many cars are in the garage.

Page 24: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

24Vladimir Misic: vm(at)cs.rit.edu

Class variables

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

LMaxSpeed=155

NumCars = 3

Page 25: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

25Vladimir Misic: vm(at)cs.rit.edu

Constant parameters

• If it was variables instead of parameters, that would be oxymoron.

• If there is a parameter whose value should not change while your program is running, that parameter type is called a constant.

• The LMaxSpeed parameter that we defined for the Car class is a constant. The maximal speed is limited by the low, and it cannot be changed once the car has been built.

• What about Z3 and 165 mph? Well, the owner has just made an illegal modification !!!

Page 26: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

26Vladimir Misic: vm(at)cs.rit.edu

Messages

For Objects

• The object to whom the message is being sent.

• The name of the method (behavior) that object is to execute.

• Any parameters (variables) needed by that method.

For Humans

• Who the message is for.

• What we want the person to do.

• What information is needed to do it.

Audi 6 • turnOnHazard()

Page 27: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

27Vladimir Misic: vm(at)cs.rit.edu

Messages and Methods

• In order to process a message, an object needs to have a method defined for the requested task.

• A method is a small, well-defined piece of code that completes a specific task.

• For our previous example, we need to define a method to turn on the car's hazard lights.

Page 28: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

28Vladimir Misic: vm(at)cs.rit.edu

Messages and Methods

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155

turnOnHazard()

MaxSpeed = 165

turnOnHazard()

MaxSpeed = 145

turnOnHazard()

MaxSpeed

LMaxSpeed=155

NumCars = 3

turnOnHazard()

Page 29: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

29Vladimir Misic: vm(at)cs.rit.edu

Instance methods

• Each class can have methods that are specific to each object, called instance methods.

• These can only affect that object's parameters, i.e., it’s instance variables.

• Example: If BMW has 4 gallons of gas and someone puts 6 more gallons of gas in his/her car, the car now has 10 gallons. The amount of gas in Audi and Corvette is unchanged.

Page 30: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

30Vladimir Misic: vm(at)cs.rit.edu

Messages and Methods

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155

turnOnHazard()addGass(amount)

MaxSpeed = 165

turnOnHazard()addGass(amount)

MaxSpeed = 145

turnOnHazard()addGass(amount)

MaxSpeedLMaxSpeed=155NumCars = 3turnOnHazard()addGass(amount)

Page 31: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

31Vladimir Misic: vm(at)cs.rit.edu

Methods

• It is also possible that you want information from an object; in this case, you would define a method that sends (returns) a message back to the requester containing that information.

• We need to know how much gas is in our cars, so we will create a new method that returns the value of GasLevel variable for our car.

Page 32: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

32Vladimir Misic: vm(at)cs.rit.edu

Messages and Methods

Audi 6BMW Z3

CorvetteCar

CarCar

Car

MaxSpeed = 155GasLevel = 4

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 165GasLevel = 10

MaxSpeed = 145GasLevel = 6

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeedGasLevelLMaxSpeed=155NumCars = 3

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

Page 33: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

33Vladimir Misic: vm(at)cs.rit.edu

Class methods

• Class methods are used to get or manipulate information about all objects created from the class.

• Typically, class methods are changing class variables. For example:– Each time we move the car in or out of the garage, we need to

add/subtract one to the number of cars: carIn( ) & carOut( )

– Also, we may want to know how many cars are actually in the garage: getNumCars( )

Page 34: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

34Vladimir Misic: vm(at)cs.rit.edu

Messages and Methods

Audi 6 BMW Z3 Corvette

Car Car Car

Car

MaxSpeed = 155GasLevel = 4

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 165GasLevel = 10

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 145GasLevel = 6

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeedGasLevelLMaxSpeed=155NumCars = 3

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

carIn()

carOut()

getNumCars():NumCars

Page 35: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

35Vladimir Misic: vm(at)cs.rit.edu

Types of methods

There are 4 basic types of methods:

• Modifier (sometimes called a mutator)– Changes the value associated with an attribute of the object (or class)

• Accessor– Returns the value associated with an attribute of the object (or class)

• Constructor– Called once when the object is created (before any other method will be

invoked)

• Destructor– Called when the object is destroyed

Page 36: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

36Vladimir Misic: vm(at)cs.rit.edu

OOP

• When writing object-oriented programs, first one must define the classes (like Car).

• Then, while the program is running, the instances of the classes (objects) (such as Audi, BMW, Corvette in our example) are created.

Page 37: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

37Vladimir Misic: vm(at)cs.rit.edu

OOP

• Object-oriented programming allows the programmer to hide the implementation details from the other objects and the users.

• In other words the implementation is transparent to the other objects or the user.

• Example: Although our computers all are different “under the hood”, we don’t need to know what’s there to be able to use them.

Page 38: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

38Vladimir Misic: vm(at)cs.rit.edu

OOP - benefits

• An object can be written and maintained separately from the rest of the program, modularity.

• An object has a “public face” that it uses to communicate with other objects, but other objects can not directly access its instance variables, information hiding.

Page 39: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

39Vladimir Misic: vm(at)cs.rit.edu

Inheritance

• All classes in Java are organized into a class hierarchy.

• The highest level classes are very general and the lower level classes are more specific.

• The lower level classes are based upon the higher level classes and inherit instance variables and methods from those higher level class. They also may contain their own (new) instance variables and methods beyond the higher level class definition.

Page 40: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

40Vladimir Misic: vm(at)cs.rit.edu

Inheritance

• A higher level class is called a superclass; a lower level class is called a subclass.

• A subclass may also be a superclass

• Inheritance allows you to define certain behaviors once and then to reuse those behaviors over and over again in the subclasses. This is called reusability.

Page 41: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

41Vladimir Misic: vm(at)cs.rit.edu

Inheritance

• Our Car class is very general.

• Let's define a new class called BMW that contains the parameters: model, color, engine size.

Page 42: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

42Vladimir Misic: vm(at)cs.rit.edu

Inheritance

CarMaxSpeedGasLevelLMaxSpeed=155

turnOnHazard()addGass(amount)getGasLevel():GasLevel

BMWModelColorEngineSize

MaxSpeedGasLevel

turnOnHazard()addGass(amount)getGasLevel():GasLevel

Page 43: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

43Vladimir Misic: vm(at)cs.rit.edu

Inheritance

• Now let's define two new classes. One for the Z3 and another for the 3 Series Sedan.

• What might be some of the differences between the two classes?

• Number of doors (3, 5)

• Roof (soft or hardtop)

• Therefore, we add variables NumDoors and Roof

Page 44: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

44Vladimir Misic: vm(at)cs.rit.edu

Inheritance

CarMaxSpeedGasLevelLMaxSpeed=155

turnOnHazard()addGass(amount)getGasLevel():GasLevel

BMWModelColorEngineSize

MaxSpeedGasLevel

turnOnHazard()addGass(amount)getGasLevel():GasLevel

Z3ModelColorEngineSizeRoof

MaxSpeedGasLevel

turnOnHazard()addGass(amount)getGasLevel():GasLevel

3 seriesModelColorEngineSizeNumDoors

MaxSpeedGasLevel

turnOnHazard()addGass(amount)getGasLevel():GasLevel

Page 45: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

45Vladimir Misic: vm(at)cs.rit.edu

Views of the class

• A class can be viewed as a sort of contract that specifies what instances of the class can, and cannot do

• It is possible to distinguish between the outside and inside view of a class

• The interface of a class provides its outside view and emphasizes the abstraction

• The implementation of a class is its inside view

Page 46: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

46Vladimir Misic: vm(at)cs.rit.edu

Access

• Most classes provide three levels of access to their members (state and behavior):– Public

• The part of the class that is visible to all clients of the class

– Protected• The part of the class that is only visible to subclasses of the class

– Private• A part of the class that is not visible to any other classes

Page 47: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

47Vladimir Misic: vm(at)cs.rit.edu

Primitive data types

• What ?!!! Primitive? What is it?

• Certain basic data types are built into Java:– Alphabetical: char

– Integral: int, byte, short, long

– Real: float, double

– Logical: boolean

• Java supports 8 primitive types (i.e. 4 basic types)

Page 48: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

48Vladimir Misic: vm(at)cs.rit.edu

Primitive data types

Type Description Bits Range of values

boolean Boolean 1 False, true

byte integers, very small 8 -128 to +127

short integers, small ones 16 -32768 to +32767

int integer 32 -2,147,483,648 to 2,147,483,647

long integer, very big ones 64 +/- 9.2 * 1018

float floating point number 32 +/-3.40292347*1038

double floating point number, very accurate 64 +/-1.79769313486231570*10308

char character 16 Unicode character (eg \u12d1)

Page 49: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

49Vladimir Misic: vm(at)cs.rit.edu

Primitive data types

• When typing integer into a program, the number must have an ‘L’ at the end: 3932354162L

• Real numbers are represented in scientific notation:– mantissa [-1,1]

– exponent (powers of two)

Page 50: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

50Vladimir Misic: vm(at)cs.rit.edu

Real data type

• Characterized by precision and range– Precision: represents number of significant digits that is

represented in the number. Depends upon the number of bits in the mantissa.

– Range: represents the difference between the largest and smallest numbers that can be represented. Depends upon the number of bits in the exponent.

• float: – 24b mantissa + 8b exponent – 6-7 decimal digits of precision

• double: – 53b mantissa + 11b exponent – 15-16 decimal digits of precision

Page 51: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

51Vladimir Misic: vm(at)cs.rit.edu

Round-off error

• When a double is stored to a float, part of the number is lost. In this situation, the seven most significant digits are preserved and the rest of the information is lost.

Page 52: Vladimir Misic: vm(at)cs.rit.edu 1 Object-Oriented Programming Basics Reading for this week † : BG 1-4.10 UNIX 1,2,4,9 JAVA 0,1 † BG = Beginner’s Guide.

52Vladimir Misic: vm(at)cs.rit.edu

Char

• Character values may represent both printable and non-printable characters:– Printable: ‘a’, ‘&”, …

– Non-printable: ‘\n’ new line, ‘\t’ tab, …

• Unicode 16b support for every character in the world: ‘\u0000’ to ‘\uFFFF’