OOP Class 2 CS 445 Object Oriented Design

OOP Class 2 CS 445 - Object Oriented Design and Programming

An Object of class OPERATIONS DATA Set Increment Write. . . Private data: hrs 8 mins 25 secs 42 Time CS 445 - Object Oriented Design and Programming Time

Definitions CS 445 - Object Oriented Design and Programming

Definitions § § § Definitions of object on the Web: a tangible and visible entity; an entity that can cast a shadow; "it was full of rackets, balls and other objects" Definitions of object-oriented on the Web “object-oriented. . . techniques where data carries with itself the "methods" (also known as "functions") used to handle that data. An OO programmer, for instance, can write a statement such as "object. print()" without having to be concerned about what kind of object will be involved at "run time" or what its printing method is. Object-oriented code is both more flexible and more organized, so it is far easier to write, read, and change than procedural code…” www. 3 dartist. com/WP/dempy/help/glossary. htm “… A style of software development and packaging based on how real world objects relate to one another. Data and procedures are combined in objects; objects communicate with each other via messages; similar objects are grouped together into classes; data and procedures are inherited through a class hierarchy…”www. olenick. com/html/glossary. html CS 445 - Object Oriented Design and Programming

Definitions § Definitions of object-oriented design on the Web: § entails transforming the analysis model into a feasible design. kaykeys. net/science/computerwork/oodesign/ § A software design method that models the characteristics of abstract or real objects using classes and objects. software. allindiansite. com/java/ojava. html § Object-oriented design (OOD) is a design method in which a system is modeled as a collection of cooperating objects and individual objects are treated as instances of a class within a class hierarchy. en. wikipedia. org/wiki/Object-oriented_design § CS 445 - Object Oriented Design and Programming

Definitions of object-oriented analysis on the Web: § Object-oriented analysis – § builds a model of a system that is composed of objects. The behavior of the system is achieved through collaboration between these objects, and the state of the system is the combined state of all the objects in it. Collaboration between objects involves them sending messages to each other. Definitions of object-oriented programming on the Web: – – – “… A programming approach based on the concepts of data abstraction and inheritance. Unlike procedural programming techniques, …” “… Style of programming characterized by the use of separate "objects" to perform different tasks within a program. These "objects" usually consist of an abstract data type or class, along with the methods used to manipulate that abstract data type …” “… A programming methodology built around objects and based on sending messages back and forth between those objects. The basic concepts of object-oriented programming are encapsulation, inheritance, and polymorphism …” CS 445 - Object Oriented Design and Programming

Modeling the Real World § Components of a software system is an interpretation of the real world – – § Model , a representation of parts of the real world Algorithm, capture the computation needed to manipulate the model Object Orientation is a software development model that makes use of objects as a representation of the real world – – An object represents anything in the real world that can be distinctly identified. A class represents a set of objects with similar characteristics and behavior CS 445 - Object Oriented Design and Programming

History 50’s – 60’s Focus Model Used §Algorithm Computation- Oriented Control Flow solving computation problems and –researching efficient algorithms – 70’s – 80’s Data complexity Data-Oriented Data Flow OO Balanced view of data and computation OO models made of objects which contain data and algorithms CS 445 - Object Oriented Design and Programming

Module Structure Chart Main Prepare File for Reading Get Data Print Data Find Weighted Average Print Heading CS 445 - Object Oriented Design and Programming Print Weighted Average

Two Design Strategies FUNCTIONAL DECOMPOSITION OBJECT-ORIENTED DESIGN OBJECT FUNCTION . . . OBJECT FUNCTION. . . CS 445 - Object Oriented Design and Programming . . .

Software Process Models CS 445 - Object Oriented Design and Programming

Unified Process § a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML) Tools are used to describe customer views (use cases) Used mainly for OO based methodologies § Runs in phases § § CS 445 - Object Oriented Design and Programming

The Unified Process (UP) Phase 1 Communication + Planning elaboration Phase 2 Planning + Modeling inception Phase 3 inception result Phase 4 Deployment CS 445 - Object Oriented Design and Programming Coding, unit test & integrate Components

UP Phases CS 445 - Object Oriented Design and Programming

UP Work Products CS 445 - Object Oriented Design and Programming

Agile Development CS 445 - Object Oriented Design and Programming

The Manifesto for Agile Software Development “We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. ” Kent Beck et al CS 445 - Object Oriented Design and Programming

What is “Agility”? Effective (rapid and adaptive) response to change § Effective communication among all stakeholders § Drawing the customer onto the team § Organizing a team so that it is in control of the work performed Yielding … § Rapid, incremental delivery of software § CS 445 - Object Oriented Design and Programming

An Agile Process § § § Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘software increments’ Adapts as changes occur CS 445 - Object Oriented Design and Programming

Extreme Programming (XP) § § The most widely used agile process, originally proposed by Kent Beck XP Planning – – – Begins with the creation of “user stories” Agile team assesses each story and assigns a cost Stories are grouped to for a deliverable increment A commitment is made on delivery date After the first increment “project velocity” is used to help define subsequent delivery dates for other increments CS 445 - Object Oriented Design and Programming

Extreme Programming (XP) § XP Design – – § XP Coding – – § Follows the KIS principle Encourage the use of CRC cards (see Chapter 8) For difficult design problems, suggests the creation of “spike solutions”— a design prototype Encourages “refactoring”—an iterative refinement of the internal program design Recommends the construction of a unit test for a store before coding commences Encourages “pair programming” XP Testing – – All unit tests are executed daily “Acceptance tests” are defined by the customer and executed to assess customer visible functionality CS 445 - Object Oriented Design and Programming

Extreme Programming (XP) CS 445 - Object Oriented Design and Programming

OO Design & Programming Java Basics CS 445 - Object Oriented Design and Programming

Classes and Objects § Class Point { An object: Int x, y; point 1 § Attributes or fields: int x, y; Public void move (intd dx, int dy) { x +=dx; y +=dy; } § A method: § void move(int dx, int dy) A message: point 1. move(10, 10) } CS 445 - Object Oriented Design and Programming

An Object of class OPERATIONS DATA Time Modularity Abstraction Set Increment Write. . . Encapsulation Private data: hrs 8 mins 25 secs 42 Time CS 445 - Object Oriented Design and Programming Inheritance Polymorphism Message Passing

Developing a Java Application Write the source code 1. • • Using an Integrated Development Environment (IDE) or text editor Save in a. java file Compile the source code: 2. • javac Class. Name. java Creates. class file Execute the application: 3. • java Class. Name Run by the Java Virtual Machine (JVM) CS 445 - Object Oriented Design and Programming

A First Application 1 2 3 4 5 6 7 8 9 10 11 12 // First program in Java // First. Program. java public class First. Program { public static void main( String [] args ) { System. out. println( "Programming is not " + " a spectator sport!" ); System. exit( 0 ); } } CS 445 - Object Oriented Design and Programming

§ § Class: First. Program Method: main(. . . ) § Statement: System. out. println(. . . ) § Comments: § – // a comment – /* another comment */ Source file: First. Program. java CS 445 - Object Oriented Design and Programming

§ Program Errors Compiler errors – – § Run-time errors – – § Found by the compiler. Usually caused by incorrect syntax or spelling Reported by the JVM Usually caused by incorrect use of prewritten classes or invalid data Logic errors – – Found by testing the program Incorrect program design or incorrect execution of the design CS 445 - Object Oriented Design and Programming

Program Life Cycle CS 445 - Object Oriented Design and Programming

Introduction: Java Platform § Java. TM platform is based on the idea that the same software should run on many different kinds of computers, consumer gadgets, and other devices. § Portability – Java platform allows you to run the same Java application on lots of different kinds of computers. CS 445 - Object Oriented Design and Programming

JVM § Java virtual machine or "JVMTM” – a translator that turns general Java platform instructions into tailored commands that make the devices do their work CS 445 - Object Oriented Design and Programming

Java Program Phases Edit 1. – IDE, vi, emacs, notepad Compile 2. – javac Load 3. – Class Loader Verify 4. – Verifier (Security and Validation) Execute 5. – Java Interpreter (java or appletviewer) CS 445 - Object Oriented Design and Programming

The java Compiler § javac – – – Creates bytecodes Stored on disk as. class Each file contains bytecode for one and only one class CS 445 - Object Oriented Design and Programming

The java Class Loader § Loads bytecodes in memory – Loads. class files from disk into memory CS 445 - Object Oriented Design and Programming

The java Bytecode Verifier § Confirms that all bytecodes are: – – § Valid and Don't violate Java’s Security restrictions Works on bytecodes from memory CS 445 - Object Oriented Design and Programming

The java Interpreter § Reads bytecodes and translate them into a language that is relevant to the targeted computer architecture – – – § PC Machintosh Cell Phone For applets execution its built into the browser or the appletviewer CS 445 - Object Oriented Design and Programming

Your first program: Hello. World. App. java § § Displays the greeting "Hello world!". To create this program, you will: Create a source file – § A source file contains text, written in Java. Compile the source file into a bytecode file. – The compiler, javac, converts these instructions into a bytecode file CS 445 - Object Oriented Design and Programming

Your first program: Hello. World. App § Run the program contained in the bytecode file – – The Java interpreter implements the Java VM This interpreter takes your bytecode file and carries out the instructions by translating them into instructions that your computer can understand. CS 445 - Object Oriented Design and Programming

JRE CS 445 - Object Oriented Design and Programming
![JAVA Program public class Hello. World. App { public static void main(String[] args) { JAVA Program public class Hello. World. App { public static void main(String[] args) {](http://slidetodoc.com/presentation_image_h2/3b60575e2e9d78a220be536d63006d4d/image-41.jpg)
JAVA Program public class Hello. World. App { public static void main(String[] args) { System. out. println("Hello World"); } } CS 445 - Object Oriented Design and Programming

Steps Save the file as Hellow. Word. App. java Compile 1. 2. – Javac Hellow. Word. App. java Hellow. Word. App. class Run the program 3. – Java Hellow. Word. App CS 445 - Object Oriented Design and Programming

Output CS 445 - Object Oriented Design and Programming

What Can be a Class? § § § Physical Objects – equipments, devices, products People – Students, Faculty, Customers Organizations – Universities, Companies, Departments, Bank Places – Buildings, Rooms, Seats Events – Mouse click, order request, purchase orders Concepts – Transaction §The domain determines the classes CS 445 - Object Oriented Design and Programming

What Features Should a Class Have? § § § Actions should be modeled as methods of a class Verb phrases Underline the verbs and nouns in the description of the requirements and use cases Nouns are candidate classes or attributes Verbs are candidate methods CS 445 - Object Oriented Design and Programming

Java Programming Language §Java Basics §OO Basics §UML Basics CS 445 - Object Oriented Design and Programming

Data Types, Variables, and Constants § § § § We use Symbolic Names to refer to data We must assign a data type for very identifier (symbolic name) Declaring Variables Primitive Data Types Initial Values and Literals String Literals and Escape Sequences Constants CS 445 - Object Oriented Design and Programming

Data Types § § For all data, assign a name (identifier) and a data type Data type tells compiler: – – – § Compiler monitors use of data – § How much memory to allocate Format in which to store data Types of operations you will perform on data Java is a "strongly typed" language Java "primitive data types" byte, short, int, long, float, double, char, boolean CS 445 - Object Oriented Design and Programming

Declaring Variables § § § Every Variable must be given a name and a data type Variables hold one value at a time, but that value can change Syntax: data. Type identifier; or data. Type identifier 1, identifier 2, …; § Naming convention for variable names: – – first letter is lowercase embedded words begin with uppercase letter CS 445 - Object Oriented Design and Programming

Java Primitive Data Types § byte, short, int, long , float, double, char, boolean primitive integral byte char short boolean int long floating point float CS 445 - Object Oriented Design and Programming double

OO Design CS 445 - Object Oriented Design and Programming

Topics § § Class Basics and Benefits Creating Objects Using Constructors Calling Methods Using Object References CS 445 - Object Oriented Design and Programming

Object-Oriented Programming § § Classes combine data and the methods (code) to manipulate the data Classes are a template used to create specific objects All Java programs consist of at least one class. Two types of classes – – Application/Applet classes Service classes CS 445 - Object Oriented Design and Programming

Example § Student class – – § Data: name, year, and grade point average Methods: store/get the value of each piece of data, promote to next year, etc. Student Object: student 1 – Data: Maria Gonzales, Sophomore, 3. 5 CS 445 - Object Oriented Design and Programming

Some Terminology § § § Object reference: identifier of the object Instantiating an object: creating an object of a class Instance of the class: the object Methods: the code to manipulate the object data Calling a method: invoking a service for an object. CS 445 - Object Oriented Design and Programming

Class Data § § Instance variables: variables defined in the class and given values in the object Fields: instance variables and static variables (we'll define static later) Members of a class: the class's fields and methods Fields can be: – – any primitive data type (int, double, etc. ) objects CS 445 - Object Oriented Design and Programming

Encapsulation § Implementation of a module should be separated from its users. § Instance variables are usually declared to be private, which means users of the class must reference the data of an object by calling methods of the class. § Thus the methods provide a protective shell around the data. We call this encapsulation. § Benefit: the class methods can ensure that the object data is always valid. CS 445 - Object Oriented Design and Programming

Modularity § § Divide-and-conquer Decompose a complex system into a highly cohesive loosely coupled modules. – Cohesion single-mind-ness of a module • – Each module should small and simple Coupling the degree of connectivity between modules • Interactions between modules should be simple CS 445 - Object Oriented Design and Programming

Abstraction § § § Separating the essential from the nonessential The behaviors of a module should be characterized in a precise way using its interfaces. Server provider for example is a client that provide services (methods) to it’s clients. – Clients need to know only the contract API. CS 445 - Object Oriented Design and Programming

Polymorphism § § § Many shapes Same method many ways to call it (dynamic) Replacing an object with its parent CS 445 - Object Oriented Design and Programming

Reusability § Reuse: class code is already written and tested, so you build a new application faster and it is more reliable Example: A Date class could be used in a calendar program, appointment-scheduling program, online shopping program, etc. CS 445 - Object Oriented Design and Programming

How To Reuse A Class § You don't need to know how the class is written. § You do need to know the application programming interface (API) of the class. § The API is published and tells you: – – – How to create objects What methods are available How to call the methods CS 445 - Object Oriented Design and Programming

Declare an Object Reference Syntax: Class. Name object. Reference; or Class. Name object. Ref 1, object. Ref 2…; § § Object reference holds address of object Example: Date d 1; CS 445 - Object Oriented Design and Programming

Instantiate an Object § § Objects MUST be instantiated before they can be used Call a constructor using new keyword Constructor has same name as class. Syntax: object. Reference = new Class. Name( arg list ); § Arg list (argument list) is comma-separated list of initial values to assign to object data CS 445 - Object Oriented Design and Programming

Constructor method special method with the same name as the class that is used with new when a class is instantiated public class name { public name(String frst, String lst) { first = frst; last = lst; } } Name name; name = new Name(“john”, “Dewey”); § CS 445 - Object Oriented Design and Programming

Date Class API constructor: special method that creates an object and assigns initial values to data Date Class Constructor Summary Date( ) creates a Date object with initial month, day, and year values of 1, 1, 2000 Date( int mm, int dd, int yy ) creates a Date object with initial month, day, and year values of mm, dd, and yy CS 445 - Object Oriented Design and Programming

Instantiation Examples Date independence. Day; independence. Day = new Date( 7, 4, 1776 ); Date graduation. Date = new Date( 5, 15, 2008 ); Date default. Date = new Date( ); Example Next Slide CS 445 - Object Oriented Design and Programming
![Constructors. java public class Constructors { public static void main( String [] args ) Constructors. java public class Constructors { public static void main( String [] args )](http://slidetodoc.com/presentation_image_h2/3b60575e2e9d78a220be536d63006d4d/image-68.jpg)
Constructors. java public class Constructors { public static void main( String [] args ) { Date independence. Day; independence. Day = new Date( 7, 4, 1776 ); Date graduation. Date = new Date( 5, 15, 2008 ); Date default. Date = new Date( ); } } Figure Next Slide CS 445 - Object Oriented Design and Programming

Objects After Instantiation CS 445 - Object Oriented Design and Programming

Calling a Method CS 445 - Object Oriented Design and Programming

Method Classifications § § Accessor methods – get… – gives values of object data Mutator methods – set… – change values of object data CS 445 - Object Oriented Design and Programming

Date Class Methods Return value Method name and argument list int get. Month( ) int returns the value of month get. Day( ) int returns the value of day get. Year( ) void returns the value of year set. Month( int mm ) void sets the value of month to mm set. Day( int dd ) void sets the value of day to dd set. Year( int yy ) sets the value of year to yy CS 445 - Object Oriented Design and Programming

The Argument List in an API § Pairs of data. Type variable. Name § Specify – – § Order of arguments Data type of each argument Arguments can be: – Any expression that evaluates to the specified data type CS 445 - Object Oriented Design and Programming

Modeling Relationships and Structures §UML CS 445 - Object Oriented Design and Programming

UML Class Diagram § Used to model the static structure and relationships among the classes of an OO software system § A class diagram is made of: – – Nodes (Classes and Interfaces) Links (Relationships) CS 445 - Object Oriented Design and Programming

Relationships § Inheritance – – – § § § Extension Relationship (specialization and generalization) Extension between two interfaces Implementation (when a class implements an interface) UML uses hollow triangle pointing toward the super class See Page 30 for an example Association Aggregation and Composition Dependency CS 445 - Object Oriented Design and Programming

Read Ahead §Chapter 2 including the case study on page 44 CS 445 - Object Oriented Design and Programming
- Slides: 77