SlideShare uma empresa Scribd logo
1 de 88
Object-oriented Analysis and
   Design
Mirza Adil




4/14/2013      Mirza Adil         1
Introduction
     OOAD: object-oriented analysis and design
     Class and object concepts
     Discovering classes
       CRC card

       Word problem to classes

     Classes and relationships
     Inheritance and polymorphism
     OOP: Object-oriented programming in Java
     At the end of this class you should be able to analyze
     a problem, design a OO solution and implement it in
     Java programming language
4/14/2013                 Mirza Adil                     2
Object-Oriented Principles
                          OOP




                                Inheritance           Polymorphism
Encapsulation                                         -- Many forms of
                                -- Hierarchy
(class concept)                                        same function
                                -- Reusability
-- Information Hiding                                 -- Abstract Methods
                                -- Extensibility
-- Interface and                                      -- Abstract Classes
                                -- Expressive power
    Implementations
                                -- Reflects many
-- Standardization
                                real-world problems
-- Access Control mechanisms
    (private /public etc.)




  4/14/2013                     Mirza Adil                           3
What is an Object?

     Object-oriented programming supports the view that programs
     are composed of objects that interact with one another.
     How would you describe an object?
     Using its characteristics (has a ----?) and its behaviors (can do --
     --?)
     Object must have unique identity (name) : Basketball, Blue ball
     Consider a ball:
       Color and diameter are characteristics (Data Declarations)

       throw, bounce, roll are behaviors (Methods)




4/14/2013                       Mirza Adil                            4
Classes are Blueprints

     A class defines the general nature of a
     collection of objects of the same type.
     The process creating an object from a class is
     called instantiation.
     Every object is an instance of a particular
     class.
     There can be many instances of objects from
     the same class possible with different values
     for data.
4/14/2013              Mirza Adil                5
Example
                       objects
                                   Object
                                   References




                                   redRose




 class Rose


                                   blueRose


              class
4/14/2013             Mirza Adil                6
Inheritance Hierarchy
                                                              Food Hierarchy
                                           Foo d

                                            eat( )




               IceCream                 Spagh etti               Pi zza

                 eat( )                   eat( )                  eat( )


            eat() is an example of polymorphic operation.

                                       Obj ect         (Java) Object Hierarchy
                                       equ al s( )          equals(), clone() and toString()
                                       tostri ng ( )
                                       cl one( )
                                                            illustrate sub-type polymorphism



            Sal ary                  Autom obi l e                Fam i l yT ree


            equ al s( )               equ al s( )                   equ al s( )
            toStri n g( )             cl one( )                     toStri n g( )
            cl one( )                 toStri n g( )                 cl one( )


4/14/2013                             Mirza Adil                                     7
Polymorphism (subtype)
     Consider a class Food. What can you do with
     Food? What does it have?
     Consider specific food items Ice Cream,
     Spaghetti and Pizza. How will you eat these?
     (Invoke eat() operation on objects of these
     classes)?
     eat() operation is polymorphically invoked
     depending on the type of the item it is
     invoked on.

4/14/2013              Mirza Adil               8
Requirements and Analysis
Methods
    See the description of a library management system
    (LMS) from Hwk1, a copy of which is attached.
    We will follow these steps:
      Functional requirements represented by Use Case
       Diagrams
      Classes discovered using CRC cards

      Static Analysis represented by class diagrams

      Dynamic Analysis by a variety of interaction
       diagrams (inter-class) and state diagram (intra-
       class).
      Component diagram showing the various modules.

      Deployment diagram showing the platforms and
       machines used.
4/14/2013                Mirza Adil                  9
Use-case Analysis
     Use case analysis involves reading and
     analyzing the specifications, as well as
     discussing the system with potential users of
     the system.
     Actors of the LMS are identified as the
     librarians and borrowers.
     Librarians directly interact with the system
     whereas borrowers interact with the system
     through the librarian.

4/14/2013              Mirza Adil                10
Use-case Diagram For
Borrower
                 Borrower
            (from Logical Vi ew)




                                      makeReservation




                                                      <<uses>>

                                                                 removeReservation
                                       borrowItem




                                         returnItem

4/14/2013                          Mirza Adil                                        11
Use-case Diagram for
Librarian
                                            addT itle
            Librarian




                                       rem oveUpdateT itle




                                             addItem




                                         rem oveUpdateItem




                                             addBorrower




4/14/2013               B.Ramamurthy     rem oveUpdateBorrower
                                                                 12
Use Cases For Borrower and
Librarian
       Use cases for the borrower:
         Borrow item

         Return item

         Make reservation

         Remove reservation

       Use cases for the librarian:
         Add title, Update or remove title

         Add borrower, Update or remove borrower

         Add item, Update or remove item

       Note 1: A title may have many items: A book may have many
       copies.
       Note 2: Titles may be book or magazine titles
       Note 3: Persistence: All use cases involve database access

4/14/2013                   B.Ramamurthy                       13
Use-case Descriptions
    Use Case: Lend Item

    Pre-condition: Item may or may be reserved

    Post-condition: Borrower gets Item. Database updated.

    Exceptions: Title not avail, Item not avail

    Actions: Case 1. If borrower has not reserved the item:
              a. A title is identified
              b. An available item of the title is identified
              c. The borrower is identified
              d. The item is borrowed(transaction)
              c. A new loan (transaction) is registered.
             Case 2. If the borrower has a reservation for the item:
              a. The borrower is identified
              b. The item is borrowed
              c. New loan is registered
              d. reservation is removed.

4/14/2013                              Mirza Adil                      14
CRC Card Example
   Weather Station                       Collaborations
                                         User Interface(UI)
    Responsibilities
                                         Date
    1. Select 24hr/Current               Time
    2. Set Date Time                     Temp
    3. Display Current                   Wind
       1. Temp(T)                        Pressure
       2. Wind (W)                       Humidity
       3. Pressure (P)
       4. Humidity (H)
    4. Display 24hours
       1. Hi/Lo for (TWPH)
    5. Display Trends in TWPH
    6. Calibrate                         Calibrator
4/14/2013                   Mirza Adil                        15
CRC Card: UserInterface

    UserInterface                          Collaborators
    Responsibilities                       Keypad

                                           Display
    1.      Input date
    2.      Input time                     Temp
    3.      Input selection                Wind
    4.      Display data                   Pressure
                                           Humidity




4/14/2013                     Mirza Adil                   16
CRC Card: Keypad
    Keypad                            Collaborators

                                      Date
    Responsibilities
                                      Time
    1. Store date
    2. Store time                     Selection
    3. Store selection




4/14/2013                Mirza Adil                   17
CRC Card: Temperature
    Temperature                         Collaborations

    Responsibilities                    T.Device

    1. Measure and Record temperature   StatDataBase
    2. Determine and record Hi/Lo
    3. Determine trend                  Date

                                        Time




4/14/2013                  Mirza Adil                    18
Class Discovery
     The entries in the collaborations column are
     possible classes or non-software entities.
     In this case these are: UserInterface, Display,
     Tempertaure, Wind, Pressure, Humidity,
     StatDataBase, Selection, Date, Time, Keypad,
     Callibrator.
     The responsibility of designing one or more of
     these classes can be assigned to the
     members of the group who participated in
     this discovery process.
     On to relations among classes and class
     diagrams.
4/14/2013              Mirza Adil                19
Classes
     OO paradigm supports the view that a system
     is made up of objects interacting by message
     passing.
     Classes represent collection of objects of the
     same type.
     An object is an instance of a class.
     A class is defined by its properties and its
     behaviors.
     A class diagram describes the static view of a
     system in terms of classes and relationships
     among the classes.
4/14/2013              Mirza Adil               20
Discovering Classes
(Alternative)
     Underline the nouns in a problem statement.
     Using the problem context and general
     knowledge about the problem domain decide
     on the important nouns.
     Design and implement classes to represent
     the nouns.
     Underline the verbs. Verbs related to a class
     may represent the behavior of the class.


4/14/2013              Mirza Adil               21
Examples
     Drawing package: Design a user interface for
     drawing various shapes: circle, square,
     rectangle.
     Football scores: Keep track of football score.
     General purpose counter: To keep of track of
     count for various applications.
     Library: Books, different categories of books,
     details of student borrower, library
     personnel.

4/14/2013              Mirza Adil                22
Designing Classes (Take 2)
 A class represents a class of objects.
 A class contains the data declarations (“parts”) and
 methods (“behaviors” or “capabilities” ).
OO Design:
 Class properties or characteristics are answers to “What is
 it made of?” (It has a ____, ____, etc.)
 Behaviors, capabilities or operations are answers to “What
 can it do?” (verbs in the problem)




   4/14/2013                Mirza Adil                   23
Classes are Blueprints
(Take 2)
     A class defines the general nature of a collection of
     objects of the same type.
     The process creating an object from a class is called
     instantiation.
     Every object is an instance of a particular class.
     There can be many instances of objects from the
     same class possible with different values for data.
     A class structure implements encapsulation as well as
     access control: private, public, protected.



4/14/2013                 Mirza Adil                   24
Example (Take 2)
                       objects
                                   Object
                                   References




                                   redRose




 class Rose


                                   blueRose


              class
4/14/2013             Mirza Adil                25
Class Diagram : Automobile
            Automobile
            public:
                seat
                seatBelt
                accelerator
            private:
                sparkPlugs
                gear
            protected:
                gloveCompartment
            public:
                startEngine
                brake
            protected: transmission
            private: fuelInjection
4/14/2013                     Mirza Adil   26
Automobile Class Using
Rational Rose Tool
              Automobile
            seat
            seatBelt
            acceleratorPedal
            sparkPlugs
            gear
            gloveCompartment

            startEngine( )
            brake( )
            transmission( )
            fuelInjection( )


4/14/2013              Mirza Adil   27
Access Control
     Public, protected, private
     Public properties and behaviors are available
     to any other object to use/invoke
     Private: available only within the objects.
     Protected: available within the objects and to
     the class hierarchy inherited from the class.
     (We will discuss more about this when
     dealing with OO concept Inheritance.)


4/14/2013              Mirza Adil`               28
Relationships
     Typically an application consists of
     many related classes.
     Commonly used relationships include:
     associations, aggregations, and
     generalizations.




4/14/2013           Mirza Adil              29
Association
     An association is a connection between
     classes, a semantic connection between
     objects of classes involved in the association.
     Association typically represents “has a” or
     “uses” relationships.
     Indicated by a line,
           sometimes with arrow indicating unidirectional
            relationship,
           adorned by the name of the relation, and
           the ends of the line adorned by cardinality of
            relationship and optionally by the roles connected
            to each class.
4/14/2013                     Mirza Adil                    30
Association : Examples
                       Uses
      Person                              Computer



     A person uses a computer.




                        Owns
        Person                     0..*    Car



       A person may own many (zero..many) cars.




4/14/2013                         Mirza Adil         31
Roles in Association
                             drives
       Person                                       Car
                    driver            company car


      A person (driver) drives a (company) car.




                     wife
                             Person

                                  husband



                     married to

4/14/2013                             Mirza Adil          32
Aggregation
     Aggregation represents a relation
     “contains”, “is a part of”, “whole-part”
     relation.
     Indicated by a line adorned on the
     “whole” by a hollow diamond
           Along with name of relationship and
           Cardinality.


4/14/2013                  Mirza Adil             33
Aggregation: Example
                       contains
      League                                Team
                                    *



      Membership aggregation: A league is made up of
      Many teams.


                                        4    wheel

                         made of
            Auto                             engine    Strong aggregation.
                                        1


                                        *
                                             part


4/14/2013                          Mirza Adil                           34
Generalization
     Generalization is a relationship between a
     general and a specific class.
     The specific class called the subclass inherits
     from the general class, called the superclass.
     Public and protected properties (attributes)
     and behaviors (operations) are inherited.
     Design representation “inheritance” OO
     concept.


4/14/2013               Mirza Adil                35
Generalization: Symbol
     It represents “is a” relationship among
     classes and objects.
     Represented by a line with an hollow
     arrow head pointing to the superclass
     at the superclass end.




4/14/2013            Mirza Adil            36
Generalization: Example
                  Vehicle




            Car    Boat                Truck




4/14/2013                 Mirza Adil           37
Combined Example
                           drives
            Person                  0..*   Vehicle




                     Car                    Boat     Truck




4/14/2013                   Mirza Adil                       38
Discovering Classes
    Library Management System (LMS)
     RESPONSIBILITIES                               COLLABORATIONS

     1. Borrow item                                 Item
     2. Reserve item
     3. Return item
     4. Remove reservation                          Reservation
     5. Add borrower                                Borrower
     6. Update or remove borrower
     7. Add title (book or magazine)                Title
     8. Update or remove title                      Book Title
     9. Add item                                    Magazine Title
     10. Update or remove item
     11. Store loan details
                                                    Loan (Transaction)

                                                    Database



4/14/2013                              Mirza Adil                        39
CRC Cards
     LMS
     (Librarian)
     Borrower
     Title: Book Title, Magazine Title
     Item
     Reservation
     Transaction (Loan)
     Database for storage

4/14/2013               Mirza Adil       40
Static Analysis: Initial Class
Diagram
                 Item                                         Title
                           0..*




                    0..1                     0..*
                                                          BookTitle   MagazineTitle
            LoanTransaction       Reservation

                    0..*            0..*

                                               Objects of these
                                               classes are all
                                               persistent data (in
               Borrow er                       a Database)




4/14/2013                                    Mirza Adil                               41
Dynamic Analysis
     “Borrow Item” use case using Sequence
     Diagram
     “Add Title” use case using Collaboration
     diagram
     “Add Item” using Activity diagram
     “Reservation” state diagram


4/14/2013            Mirza Adil            42
Borrow Item: Sequence Diagram
 : Borrower                 Bison : LMS             : Title           : Borrower         : Loan     : Item
                                                                                      Transaction


              1: findTitle ( )
                                      2: find ( )



            3: findItem ( )
                                                                  4: searchItem ( )



       5: identifyBorrower ( )
                                            6: findBorrower ( )


                                                     7: createLoanTrans ( )




4/14/2013                                                Mirza Adil                                          43
Add Title: Collaboration Diagram
            Assuming that
            add title implies
            addi ng an item


                                               1: create ( )
                                                                                    3: addItem ( )
                                                           name, ISBN
                                                           id                  Objid
                                                                                                      : Title


                           : Librarian                                      2: setItem ( )
                                                                ObjId,id
                                         titleObj


                                                                                             : Item
                                                       4: storeTi tle ( )



                                                    itemObj

                                                                  5: storeItem ( )




                                                                DB : DB


4/14/2013                                           Mirza Adil                                                  44
Add Item: Activity Diagram
            Title                       Item          Database




                              createItem




                                setItem




              addToTitle                   updateDatabase




4/14/2013                  Mirza Adil                            45
Component Diagram
                         Business Package
            + Item
            + Loan
            + Title
            + Borrower inf ormation
            + Book Title
            + Reserv ation
            + Magazine Title




                            GUI Package
            + Lend Window
            + Return Window
            + Reserv ation Window
            + Maintenance Window




4/14/2013                             Mirza Adil   46
Analysis, Design
Implementation/programming

     What is the deliverable at the end of
     the analysis and design phase?
     One or more class diagrams showing
     the classes and the relationships that
     define the OOD.
     On to OOP: Object-oriented
     programming.

4/14/2013            Mirza Adil               47
Problem Solving Using Java
                     OO Design and Progamming in Java




                                                                           Write an
      Identify classes needed                       Write an               applet
                                                    application            class
                                                    class


Reuse API          Reuse              Design new         Create and use objects
classes            your classes       classes




   4/14/2013                         Mirza Adil                              48
Instantiation :
Examples
 class FordCar ---- defines a class name FordCar
 FordCar windstar; ---- defines a Object reference windStar
 windstar = new FordCar(); ---- instantiates a windstar
 Object

 class HousePlan1 { color….
 HousePlan1 blueHouse;
 blueHouse = new HousePlan1(BLUE);
 HousePlan1 greenHouse = new HousePlan1(GREEN);


 4/14/2013               Mirza Adil                    49
Operator new and “dot”
     new operator creates a object and
     returns a reference to that object.
     After an object has been instantiated,
     you can use dot operator to access its
     methods and data declarations (if you
     have access permissions).
     EX: redRose.bloom(); greenHouse.color

4/14/2013           Mirza Adil           50
Elements of a Class
                               class


                               methods                 data declarations (variables,
             header                                    constants)


                                        body
                  header


modifiers,                        variables,           statements
                  parameters
type, name                        constants



                                                 selection        repetition           others
                               assignment


   4/14/2013                            Mirza Adil                                      51
Class Structure
                             class




                                     variables
                                     constants




                           methods



4/14/2013     Mirza Adil                         52
Defining Classes
     Syntax:
     class class_name {
       data-declarations
       constructors
       methods }
     Constructors are special methods used for
     instantiating (or creating) objects from a
     class.
     Data declarations are implemented using
     variable and constant declarations.
4/14/2013              Mirza Adil                 53
Naming Convention
     Constants: All characters in uppercase, words
     in the identifier separated by underscore: EX:
     MAX_NUM
     Variables, objects, methods: First word all
     lowercase, subsequent words start with
     uppercase. EX: nextInt, myPen, readInt()
     Classes: Start with an uppercase letter. EX:
     Tree, Car, System , Math
     Packages: are formed by set of related
     classes and packages.
4/14/2013              Mirza Adil                54
A complete example
     Problem Statement: You have been
     hired to assist in an secret encryption
     project. In this project each message
     (string) sent out is attached to a
     randomly generated secret code
     (integer) between 1 and 999. Design
     and develop an application program in
     Java to carry out this project.

4/14/2013            Mirza Adil            55
Identify Objects
     There are two central objects:
           Message
           Secret code
     Is there any class predefined in JAVA
     API that can be associated with these
     objects? Yes ,
           “string” of java.lang and “Random” of
            java.util

4/14/2013                  Mirza Adil               56
The Random class
     Random class is defined in java.util
     package.
     nextInt() method of Random class
     returns an integer between 0 and
     MAXINT of the system.




4/14/2013            Mirza Adil             57
Design
            Class String                             Class Random




                                                          An instance of Random
     An instance of string                                number generator
     Input and fill up message.                    Generate Random integer

                             Attach (concatenate)


                             Output combined message.

Lets look at an implementation.
4/14/2013                             Mirza Adil                                  58
Debugging and Testing
     Compile-time Errors : Usually typos or syntax errors
     Run-time Errors : Occurs during execution. Example:
     divide by zero .
     Logic Errors: Software will compile and execute with
     no problem, but will not produce expected results.
     (Solution: testing and correction)
     See /projects/bina/java/Peets directory for an
     exercise.




4/14/2013                 Mirza Adil                   59
Class Components
   Class name (starts with uppercase),
   constants, instance variables,
   constructors definitions and method
   definitions.
   Constants:
 public final static double PI = 3.14;
   Variables:
 private double bonus;
 public string name;
4/14/2013            Mirza Adil          60
Method Invocation/Call
   Syntax:
method_name (values);
object_name.method_name(values);
classname.method_name(values);
Examples:
computeSum(); // call to method from within the
   class where it is located
YourRose.paintIt(Red);
Math.abs(X);
4/14/2013            Mirza Adil               61
Defining Methods
  A method is group of (related)
  statements that carry out a specified
  function.
  A method is associated with a particular
  class and it specifies a behavior or
  functionality of the class.
  A method definition specifies the code
  to be executed when the method is
  invoked/activated/called.
4/14/2013          Mirza Adil            62
Method Definition : Syntax

visibility return_type method_name
                     (parameter_list)
{
 statements
}




4/14/2013        Mirza Adil             63
Return Type
     can be void, type or class identifier
     void indicates that the method called to
     perform an action in a self-standing
     way: Example: println
     type or class specify the value returned
     using a return statement inside the
     method.

4/14/2013            Mirza Adil            64
Return Statement
   Syntax of return statement:
 return; // for void methods
 return expression; // for type or class
   return value
 // the expression type and return type
   should be same


4/14/2013          Mirza Adil              65
Parameter List
     Parameter list specified in method header provides a
     mechanism for sending information to a method.
     It is powerful mechanism for specializing an object.
     The parameter list that appears in the header of a
     method
       specifies the type and name of each parameter
         and
       is called formal parameter list.

     The corresponding parameter list in the method
     invocation is called an actual parameter list.

4/14/2013                 Mirza Adil                   66
Parameter list : Syntax
  Formal parameter list: This is like molds or
  templates
(parm_type parm_name, parm_type parm_name, ....)
  Actual parameter list: This is like material that fit
  into the mold or template specified in the formal
  list:
(expression, expression....)



 4/14/2013              Mirza Adil               67
Method Definition : review
                                              definition




                    header
                                                               body
Visibility
modifiers



                                    parameter list
return type                  Name

                                                           { statements }




        4/14/2013                         Mirza Adil                68
Method Definition : Example
     Write a method that computes and
     returns the perimeter of a rectangle
     class.
     Analysis:
           Send to the method: Length and Width
           Compute inside the method: Perimeter
           Return from the method: Perimeter


4/14/2013                 Mirza Adil               69
...Example (contd.)
public int Perimeter (int Length, int Width)
{
  int Temp; // local temporary variable
  Temp = 2 * (Length + Width); // compute
   perimeter
   return Temp; // return computed value
}




 4/14/2013             Mirza Adil              70
What happens when a method
is called?
     Control is transferred to the method
     called and execution continues inside
     the method.
     Control is transferred back to the caller
     when a return statement is executed
     inside the method.



4/14/2013             Mirza Adil             71
Method Invocation : semantics
  Operating
  System
                1                                     1. OS to main method
                        2                             2. Main method execution
                         Main method                  3. Invoke Area
                        Rect.Area(….)
                                 8                    4. Transfer control to Area
                    3                                 5. Execute Area method
                                  7                   6. Return control back to
            4                                         main method
                         8
                                                      7. Resume executing main
                                                      8. Exit to OS


                             Area
                        5       method          6




4/14/2013                                Mirza Adil                                 72
Constructors
 A Constructor is used to create or instantiate
 an object from the class.
 Constructor is a special method:
     It has the same name as the class.
     It has no return type or return statement.
 Typically a class has more than one
 constructor: a default constructor which has
 no parameters, and other constructors with
 parameters.
4/14/2013               Mirza Adil                 73
Constructors (contd.)
    You don’t have to define a constructor if you need
    only a default constructor.
    When you want initializing constructors :
 1. you must include a default constructor in this case.
 2. You will use initializing constructors when you want
    the object to start with a specific initial state rather
    than as default state.
 3. Example: Car myCar(Red); // initializing constructor
    for Car class with color as parameter


4/14/2013                  Mirza Adil                     74
Visibility Modifiers
                                                 type        Method/variable name




public     protected
                       “nothing”
                       DEFAULT     private


                                                        static           “nothing”
                                                                         DEFAULT
                                                  To indicate
                                                  class method/
                                                                         To indicate
                                                  variable
                                                                         object
                                                                         method/
                                                                         variable
         4/14/2013                  Mirza Adil                                      75
..Modifiers (contd.)
     private : available only within class
     “nothing” specified : DEFAULT: within
     class and within package
     protected : within inherited hierarchy
     (only to sub classes)
     public : available to any class.


4/14/2013            Mirza Adil               76
Inheritance
     Inheritance is the act of deriving a new class
     from an existing one.
     A primary purpose of inheritance is to reuse
     existing software.
     Original class used to derive a new class is
     called “super” class and the derived class is
     called “sub” class.
     Inheritance represents “is a” relationship
     between the superclass and the subclass.
4/14/2013               Mirza Adil                77
Syntax
 class subclass extends superclass {
 class definition
 }
 Example:
  class Windstar extends FordCar // meaning it
      inherits from class Fordcar{ ....}
  Windstar myCar();
  In this example, FordCar is the super-class and
      Windstar is a sub-class and myCar is an object
      Windstar class.
4/14/2013                    Mirza Adil                78
Representing the Relationship
                            BankClass
                    has a                              has a
                                  has a

           Account [ ]                         MortgageSVC     BrokerageSVC
   is a                  is a


Checking             Savings




           is a : use inheritance
           has a : use composition, or membership




   4/14/2013                              Mirza Adil                          79
Modifers
     Visibility modifiers: private, public,
     protected
     Protected modifier is used when the
     entity needs to be available to the
     subclass but not to the public.




4/14/2013             Mirza Adil              80
Example : Words
    Main class


                                     Book class

                                                        Super class


                 Uses
                                             is a




                                     Dictionary Class


                                                         subclass
4/14/2013               Mirza Adil                                    81
Example : School
                                Student
   Main class




                uses



                                 Grad Student




4/14/2013          Mirza Adil                   82
Example
                            Food           Abstract super class




            Pizza           Hamburger                HotDog


               subclasses




4/14/2013                     Mirza Adil                          83
Interface
      An abstract method is one that does not
      have a definition within the class. Only the
      prototype is present.
      An interface is collection of constants and
      abstract methods.
      Syntax
  interface interface_name {
    constant -declarations;
    abstract methods;
  }
4/14/2013                  BR                        84
Example
interface EPA {
 bool emissionControl();
bool pollutionControl();
…
}
class NYepa implements EPA {
  bool emissionControl () {
     details/semantics /statements how to implement it }
class CAepa implements EPA {
   bool emissionControl () {….
   // different details on implementation….}
 4/14/2013                 Mirza Adil                      85
Inheritance and Interfaces
   In Java class may inherit (extend) from only
   one class. (C++ allows multiple inheritance).
   But a Java class may implement many
   interfaces.
   For example,
 public class Scribble extends Applet implements
   MouseListner, MouseMotionListner {



4/14/2013            Mirza Adil               86
Next Steps
     Develop a multi-class java application
     Develop a application with graphical
     user interface
     Develop the solution for LMS
     Where can you get more info?
 http://www.netbeans.org/kb/trails/java-se.html




4/14/2013               Mirza Adil                87
Summary
     We studied object-oriented analysis and
     design.
           From problem statement to class diagram
     We also studied basics of object-
     oriented programming (OOP).




4/14/2013                 Mirza Adil              88

Mais conteúdo relacionado

Semelhante a (Ooad)mirza adil

Semantic web final assignment
Semantic web final assignmentSemantic web final assignment
Semantic web final assignmentBarryK88
 
Jarrar: OWL (Web Ontology Language)
Jarrar: OWL (Web Ontology Language)Jarrar: OWL (Web Ontology Language)
Jarrar: OWL (Web Ontology Language)Mustafa Jarrar
 
Object oriented vs. object based programming
Object oriented vs. object based  programmingObject oriented vs. object based  programming
Object oriented vs. object based programmingMohammad Kamrul Hasan
 
Std 12 computer chapter 6 object oriented concepts (part 1)
Std 12 computer chapter 6 object oriented concepts (part 1)Std 12 computer chapter 6 object oriented concepts (part 1)
Std 12 computer chapter 6 object oriented concepts (part 1)Nuzhat Memon
 
M.c.a. (sem iv)- java programming
M.c.a. (sem   iv)- java programmingM.c.a. (sem   iv)- java programming
M.c.a. (sem iv)- java programmingPraveen Chowdary
 
Introducing java oop concepts
Introducing java oop conceptsIntroducing java oop concepts
Introducing java oop conceptsIvelin Yanev
 
Jarrar: OWL -Web Ontology Language
Jarrar: OWL -Web Ontology LanguageJarrar: OWL -Web Ontology Language
Jarrar: OWL -Web Ontology LanguageMustafa Jarrar
 
Programming Laboratory Unit 1.pdf
Programming Laboratory Unit 1.pdfProgramming Laboratory Unit 1.pdf
Programming Laboratory Unit 1.pdfswapnilslide2019
 
Lecture 2 cst 205-281 oop
Lecture 2   cst 205-281 oopLecture 2   cst 205-281 oop
Lecture 2 cst 205-281 oopktuonlinenotes
 
Selenium Training .pptx
Selenium Training .pptxSelenium Training .pptx
Selenium Training .pptxSajidTk2
 
Object relationship mapping and hibernate
Object relationship mapping and hibernateObject relationship mapping and hibernate
Object relationship mapping and hibernateJoe Jacob
 
OO Development 4 - Object Concepts
OO Development 4 - Object ConceptsOO Development 4 - Object Concepts
OO Development 4 - Object ConceptsRandy Connolly
 
Data Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersData Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersSatyam Jaiswal
 

Semelhante a (Ooad)mirza adil (20)

Ooadb
OoadbOoadb
Ooadb
 
Semantic web final assignment
Semantic web final assignmentSemantic web final assignment
Semantic web final assignment
 
UML
UMLUML
UML
 
Jarrar: OWL (Web Ontology Language)
Jarrar: OWL (Web Ontology Language)Jarrar: OWL (Web Ontology Language)
Jarrar: OWL (Web Ontology Language)
 
Object oriented vs. object based programming
Object oriented vs. object based  programmingObject oriented vs. object based  programming
Object oriented vs. object based programming
 
Std 12 computer chapter 6 object oriented concepts (part 1)
Std 12 computer chapter 6 object oriented concepts (part 1)Std 12 computer chapter 6 object oriented concepts (part 1)
Std 12 computer chapter 6 object oriented concepts (part 1)
 
What is OOP?
What is OOP?What is OOP?
What is OOP?
 
M.c.a. (sem iv)- java programming
M.c.a. (sem   iv)- java programmingM.c.a. (sem   iv)- java programming
M.c.a. (sem iv)- java programming
 
Java pdf
Java   pdfJava   pdf
Java pdf
 
Introducing java oop concepts
Introducing java oop conceptsIntroducing java oop concepts
Introducing java oop concepts
 
Characteristics of oop
Characteristics of oopCharacteristics of oop
Characteristics of oop
 
Jarrar: OWL -Web Ontology Language
Jarrar: OWL -Web Ontology LanguageJarrar: OWL -Web Ontology Language
Jarrar: OWL -Web Ontology Language
 
Programming Laboratory Unit 1.pdf
Programming Laboratory Unit 1.pdfProgramming Laboratory Unit 1.pdf
Programming Laboratory Unit 1.pdf
 
Lect1
Lect1Lect1
Lect1
 
Lecture 2 cst 205-281 oop
Lecture 2   cst 205-281 oopLecture 2   cst 205-281 oop
Lecture 2 cst 205-281 oop
 
Selenium Training .pptx
Selenium Training .pptxSelenium Training .pptx
Selenium Training .pptx
 
Object relationship mapping and hibernate
Object relationship mapping and hibernateObject relationship mapping and hibernate
Object relationship mapping and hibernate
 
OO Development 4 - Object Concepts
OO Development 4 - Object ConceptsOO Development 4 - Object Concepts
OO Development 4 - Object Concepts
 
MCA NOTES.pdf
MCA NOTES.pdfMCA NOTES.pdf
MCA NOTES.pdf
 
Data Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersData Structure Interview Questions & Answers
Data Structure Interview Questions & Answers
 

Mais de Mirza Adil

User Login Pin Screen
User Login Pin ScreenUser Login Pin Screen
User Login Pin ScreenMirza Adil
 
Zong Telecommunication Android Application
Zong Telecommunication Android ApplicationZong Telecommunication Android Application
Zong Telecommunication Android ApplicationMirza Adil
 
Mobilink Application Screen Document
Mobilink Application Screen DocumentMobilink Application Screen Document
Mobilink Application Screen DocumentMirza Adil
 
Javamagazine2012,nov dec
Javamagazine2012,nov decJavamagazine2012,nov dec
Javamagazine2012,nov decMirza Adil
 
Virtualization case study
Virtualization case studyVirtualization case study
Virtualization case studyMirza Adil
 
Apache Openmeeting
Apache Openmeeting Apache Openmeeting
Apache Openmeeting Mirza Adil
 
Apache Open meeting
Apache Open meeting Apache Open meeting
Apache Open meeting Mirza Adil
 

Mais de Mirza Adil (7)

User Login Pin Screen
User Login Pin ScreenUser Login Pin Screen
User Login Pin Screen
 
Zong Telecommunication Android Application
Zong Telecommunication Android ApplicationZong Telecommunication Android Application
Zong Telecommunication Android Application
 
Mobilink Application Screen Document
Mobilink Application Screen DocumentMobilink Application Screen Document
Mobilink Application Screen Document
 
Javamagazine2012,nov dec
Javamagazine2012,nov decJavamagazine2012,nov dec
Javamagazine2012,nov dec
 
Virtualization case study
Virtualization case studyVirtualization case study
Virtualization case study
 
Apache Openmeeting
Apache Openmeeting Apache Openmeeting
Apache Openmeeting
 
Apache Open meeting
Apache Open meeting Apache Open meeting
Apache Open meeting
 

Último

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Último (20)

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

(Ooad)mirza adil

  • 1. Object-oriented Analysis and Design Mirza Adil 4/14/2013 Mirza Adil 1
  • 2. Introduction OOAD: object-oriented analysis and design Class and object concepts Discovering classes  CRC card  Word problem to classes Classes and relationships Inheritance and polymorphism OOP: Object-oriented programming in Java At the end of this class you should be able to analyze a problem, design a OO solution and implement it in Java programming language 4/14/2013 Mirza Adil 2
  • 3. Object-Oriented Principles OOP Inheritance Polymorphism Encapsulation -- Many forms of -- Hierarchy (class concept) same function -- Reusability -- Information Hiding -- Abstract Methods -- Extensibility -- Interface and -- Abstract Classes -- Expressive power Implementations -- Reflects many -- Standardization real-world problems -- Access Control mechanisms (private /public etc.) 4/14/2013 Mirza Adil 3
  • 4. What is an Object? Object-oriented programming supports the view that programs are composed of objects that interact with one another. How would you describe an object? Using its characteristics (has a ----?) and its behaviors (can do -- --?) Object must have unique identity (name) : Basketball, Blue ball Consider a ball:  Color and diameter are characteristics (Data Declarations)  throw, bounce, roll are behaviors (Methods) 4/14/2013 Mirza Adil 4
  • 5. Classes are Blueprints A class defines the general nature of a collection of objects of the same type. The process creating an object from a class is called instantiation. Every object is an instance of a particular class. There can be many instances of objects from the same class possible with different values for data. 4/14/2013 Mirza Adil 5
  • 6. Example objects Object References redRose class Rose blueRose class 4/14/2013 Mirza Adil 6
  • 7. Inheritance Hierarchy Food Hierarchy Foo d eat( ) IceCream Spagh etti Pi zza eat( ) eat( ) eat( ) eat() is an example of polymorphic operation. Obj ect (Java) Object Hierarchy equ al s( ) equals(), clone() and toString() tostri ng ( ) cl one( ) illustrate sub-type polymorphism Sal ary Autom obi l e Fam i l yT ree equ al s( ) equ al s( ) equ al s( ) toStri n g( ) cl one( ) toStri n g( ) cl one( ) toStri n g( ) cl one( ) 4/14/2013 Mirza Adil 7
  • 8. Polymorphism (subtype) Consider a class Food. What can you do with Food? What does it have? Consider specific food items Ice Cream, Spaghetti and Pizza. How will you eat these? (Invoke eat() operation on objects of these classes)? eat() operation is polymorphically invoked depending on the type of the item it is invoked on. 4/14/2013 Mirza Adil 8
  • 9. Requirements and Analysis Methods See the description of a library management system (LMS) from Hwk1, a copy of which is attached. We will follow these steps:  Functional requirements represented by Use Case Diagrams  Classes discovered using CRC cards  Static Analysis represented by class diagrams  Dynamic Analysis by a variety of interaction diagrams (inter-class) and state diagram (intra- class).  Component diagram showing the various modules.  Deployment diagram showing the platforms and machines used. 4/14/2013 Mirza Adil 9
  • 10. Use-case Analysis Use case analysis involves reading and analyzing the specifications, as well as discussing the system with potential users of the system. Actors of the LMS are identified as the librarians and borrowers. Librarians directly interact with the system whereas borrowers interact with the system through the librarian. 4/14/2013 Mirza Adil 10
  • 11. Use-case Diagram For Borrower Borrower (from Logical Vi ew) makeReservation <<uses>> removeReservation borrowItem returnItem 4/14/2013 Mirza Adil 11
  • 12. Use-case Diagram for Librarian addT itle Librarian rem oveUpdateT itle addItem rem oveUpdateItem addBorrower 4/14/2013 B.Ramamurthy rem oveUpdateBorrower 12
  • 13. Use Cases For Borrower and Librarian Use cases for the borrower:  Borrow item  Return item  Make reservation  Remove reservation Use cases for the librarian:  Add title, Update or remove title  Add borrower, Update or remove borrower  Add item, Update or remove item Note 1: A title may have many items: A book may have many copies. Note 2: Titles may be book or magazine titles Note 3: Persistence: All use cases involve database access 4/14/2013 B.Ramamurthy 13
  • 14. Use-case Descriptions Use Case: Lend Item Pre-condition: Item may or may be reserved Post-condition: Borrower gets Item. Database updated. Exceptions: Title not avail, Item not avail Actions: Case 1. If borrower has not reserved the item: a. A title is identified b. An available item of the title is identified c. The borrower is identified d. The item is borrowed(transaction) c. A new loan (transaction) is registered. Case 2. If the borrower has a reservation for the item: a. The borrower is identified b. The item is borrowed c. New loan is registered d. reservation is removed. 4/14/2013 Mirza Adil 14
  • 15. CRC Card Example Weather Station Collaborations User Interface(UI) Responsibilities Date 1. Select 24hr/Current Time 2. Set Date Time Temp 3. Display Current Wind 1. Temp(T) Pressure 2. Wind (W) Humidity 3. Pressure (P) 4. Humidity (H) 4. Display 24hours 1. Hi/Lo for (TWPH) 5. Display Trends in TWPH 6. Calibrate Calibrator 4/14/2013 Mirza Adil 15
  • 16. CRC Card: UserInterface UserInterface Collaborators Responsibilities Keypad Display 1. Input date 2. Input time Temp 3. Input selection Wind 4. Display data Pressure Humidity 4/14/2013 Mirza Adil 16
  • 17. CRC Card: Keypad Keypad Collaborators Date Responsibilities Time 1. Store date 2. Store time Selection 3. Store selection 4/14/2013 Mirza Adil 17
  • 18. CRC Card: Temperature Temperature Collaborations Responsibilities T.Device 1. Measure and Record temperature StatDataBase 2. Determine and record Hi/Lo 3. Determine trend Date Time 4/14/2013 Mirza Adil 18
  • 19. Class Discovery The entries in the collaborations column are possible classes or non-software entities. In this case these are: UserInterface, Display, Tempertaure, Wind, Pressure, Humidity, StatDataBase, Selection, Date, Time, Keypad, Callibrator. The responsibility of designing one or more of these classes can be assigned to the members of the group who participated in this discovery process. On to relations among classes and class diagrams. 4/14/2013 Mirza Adil 19
  • 20. Classes OO paradigm supports the view that a system is made up of objects interacting by message passing. Classes represent collection of objects of the same type. An object is an instance of a class. A class is defined by its properties and its behaviors. A class diagram describes the static view of a system in terms of classes and relationships among the classes. 4/14/2013 Mirza Adil 20
  • 21. Discovering Classes (Alternative) Underline the nouns in a problem statement. Using the problem context and general knowledge about the problem domain decide on the important nouns. Design and implement classes to represent the nouns. Underline the verbs. Verbs related to a class may represent the behavior of the class. 4/14/2013 Mirza Adil 21
  • 22. Examples Drawing package: Design a user interface for drawing various shapes: circle, square, rectangle. Football scores: Keep track of football score. General purpose counter: To keep of track of count for various applications. Library: Books, different categories of books, details of student borrower, library personnel. 4/14/2013 Mirza Adil 22
  • 23. Designing Classes (Take 2) A class represents a class of objects. A class contains the data declarations (“parts”) and methods (“behaviors” or “capabilities” ). OO Design: Class properties or characteristics are answers to “What is it made of?” (It has a ____, ____, etc.) Behaviors, capabilities or operations are answers to “What can it do?” (verbs in the problem) 4/14/2013 Mirza Adil 23
  • 24. Classes are Blueprints (Take 2) A class defines the general nature of a collection of objects of the same type. The process creating an object from a class is called instantiation. Every object is an instance of a particular class. There can be many instances of objects from the same class possible with different values for data. A class structure implements encapsulation as well as access control: private, public, protected. 4/14/2013 Mirza Adil 24
  • 25. Example (Take 2) objects Object References redRose class Rose blueRose class 4/14/2013 Mirza Adil 25
  • 26. Class Diagram : Automobile Automobile public: seat seatBelt accelerator private: sparkPlugs gear protected: gloveCompartment public: startEngine brake protected: transmission private: fuelInjection 4/14/2013 Mirza Adil 26
  • 27. Automobile Class Using Rational Rose Tool Automobile seat seatBelt acceleratorPedal sparkPlugs gear gloveCompartment startEngine( ) brake( ) transmission( ) fuelInjection( ) 4/14/2013 Mirza Adil 27
  • 28. Access Control Public, protected, private Public properties and behaviors are available to any other object to use/invoke Private: available only within the objects. Protected: available within the objects and to the class hierarchy inherited from the class. (We will discuss more about this when dealing with OO concept Inheritance.) 4/14/2013 Mirza Adil` 28
  • 29. Relationships Typically an application consists of many related classes. Commonly used relationships include: associations, aggregations, and generalizations. 4/14/2013 Mirza Adil 29
  • 30. Association An association is a connection between classes, a semantic connection between objects of classes involved in the association. Association typically represents “has a” or “uses” relationships. Indicated by a line,  sometimes with arrow indicating unidirectional relationship,  adorned by the name of the relation, and  the ends of the line adorned by cardinality of relationship and optionally by the roles connected to each class. 4/14/2013 Mirza Adil 30
  • 31. Association : Examples Uses Person Computer A person uses a computer. Owns Person 0..* Car A person may own many (zero..many) cars. 4/14/2013 Mirza Adil 31
  • 32. Roles in Association drives Person Car driver company car A person (driver) drives a (company) car. wife Person husband married to 4/14/2013 Mirza Adil 32
  • 33. Aggregation Aggregation represents a relation “contains”, “is a part of”, “whole-part” relation. Indicated by a line adorned on the “whole” by a hollow diamond  Along with name of relationship and  Cardinality. 4/14/2013 Mirza Adil 33
  • 34. Aggregation: Example contains League Team * Membership aggregation: A league is made up of Many teams. 4 wheel made of Auto engine Strong aggregation. 1 * part 4/14/2013 Mirza Adil 34
  • 35. Generalization Generalization is a relationship between a general and a specific class. The specific class called the subclass inherits from the general class, called the superclass. Public and protected properties (attributes) and behaviors (operations) are inherited. Design representation “inheritance” OO concept. 4/14/2013 Mirza Adil 35
  • 36. Generalization: Symbol It represents “is a” relationship among classes and objects. Represented by a line with an hollow arrow head pointing to the superclass at the superclass end. 4/14/2013 Mirza Adil 36
  • 37. Generalization: Example Vehicle Car Boat Truck 4/14/2013 Mirza Adil 37
  • 38. Combined Example drives Person 0..* Vehicle Car Boat Truck 4/14/2013 Mirza Adil 38
  • 39. Discovering Classes Library Management System (LMS) RESPONSIBILITIES COLLABORATIONS 1. Borrow item Item 2. Reserve item 3. Return item 4. Remove reservation Reservation 5. Add borrower Borrower 6. Update or remove borrower 7. Add title (book or magazine) Title 8. Update or remove title Book Title 9. Add item Magazine Title 10. Update or remove item 11. Store loan details Loan (Transaction) Database 4/14/2013 Mirza Adil 39
  • 40. CRC Cards LMS (Librarian) Borrower Title: Book Title, Magazine Title Item Reservation Transaction (Loan) Database for storage 4/14/2013 Mirza Adil 40
  • 41. Static Analysis: Initial Class Diagram Item Title 0..* 0..1 0..* BookTitle MagazineTitle LoanTransaction Reservation 0..* 0..* Objects of these classes are all persistent data (in Borrow er a Database) 4/14/2013 Mirza Adil 41
  • 42. Dynamic Analysis “Borrow Item” use case using Sequence Diagram “Add Title” use case using Collaboration diagram “Add Item” using Activity diagram “Reservation” state diagram 4/14/2013 Mirza Adil 42
  • 43. Borrow Item: Sequence Diagram : Borrower Bison : LMS : Title : Borrower : Loan : Item Transaction 1: findTitle ( ) 2: find ( ) 3: findItem ( ) 4: searchItem ( ) 5: identifyBorrower ( ) 6: findBorrower ( ) 7: createLoanTrans ( ) 4/14/2013 Mirza Adil 43
  • 44. Add Title: Collaboration Diagram Assuming that add title implies addi ng an item 1: create ( ) 3: addItem ( ) name, ISBN id Objid : Title : Librarian 2: setItem ( ) ObjId,id titleObj : Item 4: storeTi tle ( ) itemObj 5: storeItem ( ) DB : DB 4/14/2013 Mirza Adil 44
  • 45. Add Item: Activity Diagram Title Item Database createItem setItem addToTitle updateDatabase 4/14/2013 Mirza Adil 45
  • 46. Component Diagram Business Package + Item + Loan + Title + Borrower inf ormation + Book Title + Reserv ation + Magazine Title GUI Package + Lend Window + Return Window + Reserv ation Window + Maintenance Window 4/14/2013 Mirza Adil 46
  • 47. Analysis, Design Implementation/programming What is the deliverable at the end of the analysis and design phase? One or more class diagrams showing the classes and the relationships that define the OOD. On to OOP: Object-oriented programming. 4/14/2013 Mirza Adil 47
  • 48. Problem Solving Using Java OO Design and Progamming in Java Write an Identify classes needed Write an applet application class class Reuse API Reuse Design new Create and use objects classes your classes classes 4/14/2013 Mirza Adil 48
  • 49. Instantiation : Examples class FordCar ---- defines a class name FordCar FordCar windstar; ---- defines a Object reference windStar windstar = new FordCar(); ---- instantiates a windstar Object class HousePlan1 { color…. HousePlan1 blueHouse; blueHouse = new HousePlan1(BLUE); HousePlan1 greenHouse = new HousePlan1(GREEN); 4/14/2013 Mirza Adil 49
  • 50. Operator new and “dot” new operator creates a object and returns a reference to that object. After an object has been instantiated, you can use dot operator to access its methods and data declarations (if you have access permissions). EX: redRose.bloom(); greenHouse.color 4/14/2013 Mirza Adil 50
  • 51. Elements of a Class class methods data declarations (variables, header constants) body header modifiers, variables, statements parameters type, name constants selection repetition others assignment 4/14/2013 Mirza Adil 51
  • 52. Class Structure class variables constants methods 4/14/2013 Mirza Adil 52
  • 53. Defining Classes Syntax: class class_name { data-declarations constructors methods } Constructors are special methods used for instantiating (or creating) objects from a class. Data declarations are implemented using variable and constant declarations. 4/14/2013 Mirza Adil 53
  • 54. Naming Convention Constants: All characters in uppercase, words in the identifier separated by underscore: EX: MAX_NUM Variables, objects, methods: First word all lowercase, subsequent words start with uppercase. EX: nextInt, myPen, readInt() Classes: Start with an uppercase letter. EX: Tree, Car, System , Math Packages: are formed by set of related classes and packages. 4/14/2013 Mirza Adil 54
  • 55. A complete example Problem Statement: You have been hired to assist in an secret encryption project. In this project each message (string) sent out is attached to a randomly generated secret code (integer) between 1 and 999. Design and develop an application program in Java to carry out this project. 4/14/2013 Mirza Adil 55
  • 56. Identify Objects There are two central objects:  Message  Secret code Is there any class predefined in JAVA API that can be associated with these objects? Yes ,  “string” of java.lang and “Random” of java.util 4/14/2013 Mirza Adil 56
  • 57. The Random class Random class is defined in java.util package. nextInt() method of Random class returns an integer between 0 and MAXINT of the system. 4/14/2013 Mirza Adil 57
  • 58. Design Class String Class Random An instance of Random An instance of string number generator Input and fill up message. Generate Random integer Attach (concatenate) Output combined message. Lets look at an implementation. 4/14/2013 Mirza Adil 58
  • 59. Debugging and Testing Compile-time Errors : Usually typos or syntax errors Run-time Errors : Occurs during execution. Example: divide by zero . Logic Errors: Software will compile and execute with no problem, but will not produce expected results. (Solution: testing and correction) See /projects/bina/java/Peets directory for an exercise. 4/14/2013 Mirza Adil 59
  • 60. Class Components Class name (starts with uppercase), constants, instance variables, constructors definitions and method definitions. Constants: public final static double PI = 3.14; Variables: private double bonus; public string name; 4/14/2013 Mirza Adil 60
  • 61. Method Invocation/Call Syntax: method_name (values); object_name.method_name(values); classname.method_name(values); Examples: computeSum(); // call to method from within the class where it is located YourRose.paintIt(Red); Math.abs(X); 4/14/2013 Mirza Adil 61
  • 62. Defining Methods A method is group of (related) statements that carry out a specified function. A method is associated with a particular class and it specifies a behavior or functionality of the class. A method definition specifies the code to be executed when the method is invoked/activated/called. 4/14/2013 Mirza Adil 62
  • 63. Method Definition : Syntax visibility return_type method_name (parameter_list) { statements } 4/14/2013 Mirza Adil 63
  • 64. Return Type can be void, type or class identifier void indicates that the method called to perform an action in a self-standing way: Example: println type or class specify the value returned using a return statement inside the method. 4/14/2013 Mirza Adil 64
  • 65. Return Statement Syntax of return statement: return; // for void methods return expression; // for type or class return value // the expression type and return type should be same 4/14/2013 Mirza Adil 65
  • 66. Parameter List Parameter list specified in method header provides a mechanism for sending information to a method. It is powerful mechanism for specializing an object. The parameter list that appears in the header of a method  specifies the type and name of each parameter and  is called formal parameter list. The corresponding parameter list in the method invocation is called an actual parameter list. 4/14/2013 Mirza Adil 66
  • 67. Parameter list : Syntax Formal parameter list: This is like molds or templates (parm_type parm_name, parm_type parm_name, ....) Actual parameter list: This is like material that fit into the mold or template specified in the formal list: (expression, expression....) 4/14/2013 Mirza Adil 67
  • 68. Method Definition : review definition header body Visibility modifiers parameter list return type Name { statements } 4/14/2013 Mirza Adil 68
  • 69. Method Definition : Example Write a method that computes and returns the perimeter of a rectangle class. Analysis:  Send to the method: Length and Width  Compute inside the method: Perimeter  Return from the method: Perimeter 4/14/2013 Mirza Adil 69
  • 70. ...Example (contd.) public int Perimeter (int Length, int Width) { int Temp; // local temporary variable Temp = 2 * (Length + Width); // compute perimeter return Temp; // return computed value } 4/14/2013 Mirza Adil 70
  • 71. What happens when a method is called? Control is transferred to the method called and execution continues inside the method. Control is transferred back to the caller when a return statement is executed inside the method. 4/14/2013 Mirza Adil 71
  • 72. Method Invocation : semantics Operating System 1 1. OS to main method 2 2. Main method execution Main method 3. Invoke Area Rect.Area(….) 8 4. Transfer control to Area 3 5. Execute Area method 7 6. Return control back to 4 main method 8 7. Resume executing main 8. Exit to OS Area 5 method 6 4/14/2013 Mirza Adil 72
  • 73. Constructors A Constructor is used to create or instantiate an object from the class. Constructor is a special method:  It has the same name as the class.  It has no return type or return statement. Typically a class has more than one constructor: a default constructor which has no parameters, and other constructors with parameters. 4/14/2013 Mirza Adil 73
  • 74. Constructors (contd.) You don’t have to define a constructor if you need only a default constructor. When you want initializing constructors : 1. you must include a default constructor in this case. 2. You will use initializing constructors when you want the object to start with a specific initial state rather than as default state. 3. Example: Car myCar(Red); // initializing constructor for Car class with color as parameter 4/14/2013 Mirza Adil 74
  • 75. Visibility Modifiers type Method/variable name public protected “nothing” DEFAULT private static “nothing” DEFAULT To indicate class method/ To indicate variable object method/ variable 4/14/2013 Mirza Adil 75
  • 76. ..Modifiers (contd.) private : available only within class “nothing” specified : DEFAULT: within class and within package protected : within inherited hierarchy (only to sub classes) public : available to any class. 4/14/2013 Mirza Adil 76
  • 77. Inheritance Inheritance is the act of deriving a new class from an existing one. A primary purpose of inheritance is to reuse existing software. Original class used to derive a new class is called “super” class and the derived class is called “sub” class. Inheritance represents “is a” relationship between the superclass and the subclass. 4/14/2013 Mirza Adil 77
  • 78. Syntax class subclass extends superclass { class definition } Example: class Windstar extends FordCar // meaning it inherits from class Fordcar{ ....} Windstar myCar(); In this example, FordCar is the super-class and Windstar is a sub-class and myCar is an object Windstar class. 4/14/2013 Mirza Adil 78
  • 79. Representing the Relationship BankClass has a has a has a Account [ ] MortgageSVC BrokerageSVC is a is a Checking Savings is a : use inheritance has a : use composition, or membership 4/14/2013 Mirza Adil 79
  • 80. Modifers Visibility modifiers: private, public, protected Protected modifier is used when the entity needs to be available to the subclass but not to the public. 4/14/2013 Mirza Adil 80
  • 81. Example : Words Main class Book class Super class Uses is a Dictionary Class subclass 4/14/2013 Mirza Adil 81
  • 82. Example : School Student Main class uses Grad Student 4/14/2013 Mirza Adil 82
  • 83. Example Food Abstract super class Pizza Hamburger HotDog subclasses 4/14/2013 Mirza Adil 83
  • 84. Interface An abstract method is one that does not have a definition within the class. Only the prototype is present. An interface is collection of constants and abstract methods. Syntax interface interface_name { constant -declarations; abstract methods; } 4/14/2013 BR 84
  • 85. Example interface EPA { bool emissionControl(); bool pollutionControl(); … } class NYepa implements EPA { bool emissionControl () { details/semantics /statements how to implement it } class CAepa implements EPA { bool emissionControl () {…. // different details on implementation….} 4/14/2013 Mirza Adil 85
  • 86. Inheritance and Interfaces In Java class may inherit (extend) from only one class. (C++ allows multiple inheritance). But a Java class may implement many interfaces. For example, public class Scribble extends Applet implements MouseListner, MouseMotionListner { 4/14/2013 Mirza Adil 86
  • 87. Next Steps Develop a multi-class java application Develop a application with graphical user interface Develop the solution for LMS Where can you get more info? http://www.netbeans.org/kb/trails/java-se.html 4/14/2013 Mirza Adil 87
  • 88. Summary We studied object-oriented analysis and design.  From problem statement to class diagram We also studied basics of object- oriented programming (OOP). 4/14/2013 Mirza Adil 88