SlideShare a Scribd company logo
1 of 115
OBJECT
4   CONCEPTS
    Understanding basic object-oriented concepts
1   INTRODUCTION
    2 METHODOLOGIES
    3 MODELS AND UML
    4 OBJECT CONCEPTS
    5   ANALYSIS
2
    6 SOFTWARE DESIGN
Goal of Presentation
3


       This presentation will cover
         object and class
         methods and attributes

         abstraction, encapsulation, information-hiding, coupling

         cohesion, inheritance, association

         aggregation, collaboration

         messaging, polymorphism, persistence
What is an Object?
4


       In some way everything can be an object.
       In general, an object is a person, place, thing, event, or
        concept.
       Because different people have different perceptions of
        the same object, what an object is depends upon the
        point of view of the observer.
         “ … for there is nothing either good or bad, but thinking
          makes it so.”
         That is, we describe an object on the basis of the features
          and behaviors that are important or relevant to us.
Abstraction
5


        An object is thus an abstraction.
        An object is an “abstraction of something in the
         problem domain, reflecting the capabilities of the
         system to keep information about it, interact with it,
         or both.” (Coad and Yourdon)




        Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 64
Abstraction
6


        An abstraction is a form of representation that
         includes only what is useful or interesting from a
         particular viewpoint.
           e.g.,  a map is an abstract representation, since no map
            shows every detail of the territory it covers
           "A map is not the territory it represents, but if correct,
            it has a similar structure to the territory, which accounts
            for its usefulness" -- Alfred Korzybski




        Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 64
Types of Objects
7


       Objects are usually classified as
         Objects    representing physical things
             e.g. students, furniture, buildings, classrooms
         Objects    representing concepts
             e.g., courses, departments, loan
Class
8

       We classify similar objects as a type of thing in order to
        categorize them and make inferences about their attributes
        and behavior.
           To a child, mommy, daddy, big brother, and aunt Jane are all
            classified together as people with relatively similar attributes
            (head, nose, arms) and behaviors (smile, hug, run, etc).
       For this reason, a type of object is referred to as a class.
           A general type of thing is a superclass, a special type of thing is
            a subclass.

                   Superclass                             Person




        Subclass                Subclass         Parent            Child
Class and objects
9

        A class is thus a type of thing, and all specific things
         that fit the general definition of the class are things that
         belong to the class.
             A class is a "blueprint" or description for the objects.
        An object is a specific instance of a class.
             Objects are thus instantiated (created/defined) from
              classes

            Fred           Sue               are instances of

                                                                               Student

               
                Eric           Jane
                                                                         the Student class



          These student objects
        Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.136
Class Members
10


        Attributes/Data
          the things classes "know" (nouns)
          a piece of data or information

          sometimes called data members or member variables or
           fields
        Methods/Operations/Behaviors
          the things classes "do" (verbs)
          These define the operations you can perform for the class.

          Similar to procedures/functions in other programming
           languages.
Naming classes
11

         Class names are typically nouns.
              The name of a class generally should be one or two words.
         Class names are almost always singular (Student, not Students).
              In the real world, you would say “I am a student,” not “I am a students”
         In UML, classes are modeled as a rectangle that lists its attributes
          and methods, or just as a rectangle.

               Student                            Student

         attributes

         methods

         UML (Unified Modeling Language) is a diagramming notation for describing
         software systems.




         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.138
UML Class Diagrams
12


         Student                    Student                         Student

     attributes                 name                        -name: String
                                phoneNumber                 -phoneNumber: String
                                address                     -address: String
     methods
                                enrollCourse()              +enrollCourse(): void
                                payTuition()                +payTuition(): void
                                dropCourse()                +dropCourse(): void
         Student                getName()                   +getName(): String




     In UML, you can add/remove detail from your class diagrams
Interfaces
13


        The attributes and methods that a class provides to
         other classes constitute the class’s interface.
        The interface thus completely describes how users of
         that class interact with the class.
          InJava and C#, methods and attributes are
           designated using either the public, private or
           protected keyword.
Real-world Interface & Implementation
14




     Requesting object




                                                     Interface
                                                                                       Implementation




       Source: Matt Weisfeld, The Object-Oriented Thought Process (Sams, 2000), p.22
Encapsulation
15


        Perhaps the most important principle in OO is that
         of encapsulation (also known as information hiding
         or implementation hiding).
          Thisis the principle of separating the implementation of
           an class from its interface and hiding the
           implementation from its clients.
          Thus, someone who uses a software object will have
           knowledge of what it can do, but will have no
           knowledge of how it does it.


         Source: Meiler Page-Jones, Fundamentals of Object-Oriented Design in UML(Addison-Wesley, 2000), p.12-4
Encapsulation
16


        Benefits
          Maximizes                maintainability
                 making changes to the implementation of a well
                  encapsulated class should have no impact on rest of system.
          Decouples    content of information from its form of
              representation
                 thus the user of an object will not become tied to format of
                  the information.




         Source: Meiler Page-Jones, Fundamentals of Object-Oriented Design in UML(Addison-Wesley, 2000), p.12-4
Encapsulation
17

         Encapsulation is implemented through access
          protection.
           Every   class, data member and method in a Java or
               C# program is defined as either public,
               private, protected or unspecified.


         A ttribute               Permitted A ccess
         N o acce ss attrib ute   Fro m any class in the sam e p ackage

         pi
         uc
          b
          l                       Fro m any class anyw he re

         pa
         rt
          ie
          v                       N o acce ss fro m o utsid e class

         ped
         rc
          ot
          te                      Fro m any class in the sam e p ackage and fro m any sub class anyw he re
Variable Scope
18


      class 1                 class 2

         private variable A      private variable X




         private variable B      public variable Y




         public variable C       public variable Z



         ...                     ...
Scope of Member Variables
19

     class ScopeClass
     {
       private int aPrivate = 1;
       int aUnknown = 2;
       public int aPublic = 3;
     }


     class ScopeTest
     {
       public static void main(String[] args)
       {
         ScopeClass aScope = new ScopeClass();

             System.out.println("Scope Test");
             System.out.println("aPrivate=" + aScope.aPrivate);   Generates a compile error
             System.out.println("aUnknown=" + aScope.aUnknown);
             System.out.println("aPublic=" + aScope.aPublic);
         }
     }
Review: Classes
20

        Classes are the most fundamental structural
         element in Java or C#
            Every program has at least one class defined.
            Data member declarations appear within classes.
            Methods appear within classes.
            statements appear within methods and properties.
                                                  class

                                                          data member declarations


                                                          method

                                                                statement


                                                          method

                                                                statement
                                                                statement
                                                                statement
Class Definitions
21

      class definition                  public class Rectangle {


           data member declaration          public double lowerLeftX,lowerLeftY;
                                            public double upperRightX,lowerRightY;


           method definition                public double width() {
                                                return upperRightX - lowerLeftX;
                method implementation       }


           method definition                public double height() {
                                                return upperRightY - lowerLeftY;
                method implementation
                                            }

           method definition
                                            public double area() {
                method implementation           return width() * height();
                                            }
          ...                           }

                                                        Call or invoking the width and
                                                        height methods defined above.
Types of members
22


        Two types of members (data members and
         methods):
          static   or class members
            a member that is shared by all objects of that class
            it is called a class member because it belongs to the class,
             not to a given object.
            It is called a static member because it is declared with the
             static keyword.
          instance    members
              Each instance/object of the class will have a copy of each
               instance member.
Members in a class definition
23

                                                            numPersons




                                                         Shared between all
     public class Person {                               objects

         // class variables
         static int numPersons;
                                                                              name
         // instance variables
         String name;                                                         phone
         String phone;                                                        age
         int age;                                  Each object
                                                   will get its
     }
                                                   own copy
                                                                                      Person objects
                                                                                      Created later by new statement

                                                                              name
                                                                              phone
                                                                              age




          Source: Ivor Horton, Beginning Java 2 (Wrox)
Instance variables in a class definition
24
     ...
     public class Person {                                              employee

         // instance variables
         String name;
         int age;                                          Creates a memory location to hold
                                                           reference (memory address) to an object
     }
     ...                                             1.    of type employee. No object is created and
                                                           no memory allocated for object.
     Person employee;
                                                                                                                   2.
     employee = new Person;

                                                                2.     Creates employee object in memory and
                                                                       sets employee to reference it.
     employee.name = "Karl Marx";
     employee.age = 56;

                                                                                                        name

                                                                                                        age

                                         3.
                                                 name      Karl Marx

                                                 age       56                                                  Person object



      Source: Ivor Horton, Beginning Java 2 (Wrox)
                                                          Person object
Instance variables in a class definition
25

     ...
     public class Person {

        // instance variables        Creates memory location to reference
                                     object and creates employee object in
        String name;
                                     memory and sets employee to reference it.
        int age;
     }
     ...
     Person employee = new Person;
     Person boss = new Person;             employee

     employee.name = "Karl Marx";
     employee.age = 56;
                                     name = Karl Marx
                                     age = 56
     boss.name = "Adam Smith";
     boss.age = 44;


                                                         Person objects



                                     name = Adam Smith
                                     age = 44




                                            boss
Some Scope Combinations
26

        public static
            Static variable, that is shared between all instances, and that is available to
             other classes.
        private static
            Static variable, that is shared between all instances, and that only available
             within its class.
        public
            Instance variable (each instance will have a copy), that is available to other
             classes.
        private
            Instance variable (each instance will have a copy), that is only available within
             its class.
        final (java) / const (C#)
            Indicates that the value in the variable can not be changed (i.e., it is a constant).
Some Scope Combinations
     class ScopeClass {
27     // data members
       private static int aPrivateStatic = 1;
       public static int aPublicStatic = 2;                  aPrivateStatic = 1
       private final static int ONECONSTANT = 10;
       public final static int TWOCONSTANT = 20;
       private int aPrivateInstance = 3;                     aPublicStatic = 2  2000  4000
       public int aPublicInstance = 4;
     }                                                       ONECONSTANT = 10


     class ScopeTest {                                       TWOCONSTANT = 20
       public static void main(String[] args) {
         ScopeClass xScope = new ScopeClass();
         ScopeClass yScope = new ScopeClass();                     xScope

             xScope.aPublicInstance   = 77;                  aPublicInstance=77
             yScope.aPublicInstance   = 44;                  aPrivateInstance=3
             xScope.aPublicStatic =   2000;
             yScope.aPublicStatic =   4000;

             System.out.println(xScope.aPublicInstance);
             System.out.println(xScope.aPublicStatic);             yScope

             System.out.println(yScope.aPublicInstance);
             System.out.println(yScope.aPublicStatic);        aPublicInstance=44
                                                              aPrivateInstance=3
             System.out.println(ScopeClass.aPublicStatic);
             System.out.println(ScopeClass.TWOCONSTANT);
         }
     }
Accessing data members directly
28

     public class Employee {

           // data members
           public String name;
           public double salary;
           public static int numEmployees;

     }




     ...
           Employee boss = new Employee("Randy");

           boss.salary = 50000.0
                                                    Is this allowed?
           Employee.numEmployees = 44;
     ...
Accessing data members directly
29


        Direct variable access of data members from other
         classes is allowed unless the variable is private.
          e.g.,   boss.salary
        However, it is strongly discouraged.
          With direct access, the class loses its ability to control
           what values go into an data member (i.e., no longer do
           we have encapsulation).
              e.g., in previous example, user could enter a negative value
               for salary.
Accessors and Mutators
30

        In Java, provide accessor and mutator methods for retrieving
         data values and for setting data values
            e.g., getSalary() and setSalary()
            To prevent outside direct variable access, use the private modifier.
              private double salary;

              public void setSalary(double newSalary) {
                     salary = newSalary;
              }

              public double getSalary() {
                     return salary;
              }

        Mutators often need error checking (indeed this is their whole
         purpose). public(newSalary >= 0)
                      if
                          void setSalary(double newSalary) {

                                salary = newSalary;
                            else
                                 throw new Exception("Illegal salary in setSalary");
                        }
Properties
31


        In C#, there is a language feature called properties
         which are used instead of accessors/mutators.
         private double salary;

         public double Salary {
             get { return salary; }
             set { salary = value;
         }




         …
         double x = Salary;
         Salary = 50.0;
Conventions for Data Members
32

        While not necessary, it will make your class’s code
         more readable and comprehensible to use a naming
         convention for data members.
            Developers often add an underscore (_) or m_ as a
             prefix or suffix.
            e.g., _salary

             public class Employee {

                 // data members
                 private double _salary;

                 // properties
                 public double Salary {
                    get { return _salary; }
                    set { _salary = value;
                 }
             }
Constructors
33


         When an object of a class is created (via new), a
          special method called a constructor is always invoked.
            You can supply your own constructor, or let the compiler
             supply one (that does nothing).
            Constructors are often used to initialize the instance
             variables for that class.
         Two characteristics:
            constructor method has same name as the class.
            Constructor method never returns a value and must not have
             a return type specified (not even void).

         Source: Ivor Horton, Beginning Java 2 (Wrox), p. 177.
Constructor
34


     public class Person {

         // data members
         public String _name;
         public String _phone;
         public int _age;
                                         ...
         // class constructor            Person employee = new Person();
         public Person()
         {
            _age = -1;                   Person boss = new Person();
         }
                                         ...
         // class methods
                                 Each time a Person object is created, the class
         // instance methods     constructor is called (and as a result, employee._age
     }                           and boss._age is initialized to -1)
Multiple Constructors
35
         You can supply more than one constructor method to a class.
             Typically done to provide users with alternate ways of creating an
              object.
         This is called overloading (and can be done with method and
          constructors)
public class Person {
                                                      ...
     // instance variables                            Person employee = new Person;
     String _name;
     int _age;
                                                      Person janitor = new Person(45);
     // class constructors
     public Person() {
        _age = -1;                                    Person boss = new Person(30, "Fred");
     }
                                                      ...
     public Person(int age) {
        _age = newAge;
     }

     public Person(int age, String name) {
        _age = age;
        _name = name;
     }
}
Invoking another Constructor (Java)
36

     public class Person {
     ...

         public Person(int age) {
             _age = age;
         }

         public Person(int age, String name) {
             this(age);
             _name = name;
         }

         public Person(int age, String name, String address) {
             this(age, name);
             _address = address;
         }
     }
Invoking another Constructor (C#)
37

     public class Person {
     ...

         public Person(int age) {
             _age = age;
         }

         public Person(int age, String name) : this(age) {
             _name = name;
         }

         public Person(int age, String name, String address) : this(age,name) {
             _address = address;
         }
     }
Static Initialization
38

        Constructors can only initialize instance data members.
        To initialize static data members, you must use either:
            When they are declared.
                E.g.
                 public class Sample {
                      private static int _count = 0;
            Within a static initialization block (Java)
                Necessary when static variable must invoke a method
                E.g.
                 public class Sample {
                      private static int _count;
                      private static LookupTable _table;
                     static {
                        _count = 0;
                        _table = LoadTableFromFile();
                     }
            Within a static constructor (C#)
                E.g.
                 public class Sample {
                      private static int _count;
                      private static LookupTable _table;
                     static Sample() {
                        _count = 0;
                        _table = LoadTableFromFile();
                     }
Method Overloading
39

        There are situations where you need a method that does similar things but
         accept different lists of arguments.
        Java and C# allow you to overload a method definition so that the method
         can accept a different number of arguments.
            That is, they allow multiple methods to have the same name, as long as those
             methods have different lists of arguments.
            It makes a method more flexible
     class Calculator {
       public int add(int a, int b) {
         return a + b;                             ...
       }                                           Calculator calc = new Calculator();
       public double add(double a, double b) {     int a = calc(3,5);
         return a + b;                             double b = calc(34.56,342.45);
       }                                           ...
     }



        Method overloading is an important part of object-oriented development
            Subclasses can overload methods defined in a superclass.
Class Relationships
40


        Classes do not exist by themselves themselves, but
         exist in relationships with other classes.
        Kinds of relationship
          Generalization   (Inheritance)
          Aggregation

          Association

          Dependency
Generalization Relationship
41


         Classification of objects is hierarchic in nature.
         A subclass is said to specialize its superclass(es) by
          including only certain of the superclass features.
         A superclass generalizes its subclasses by including
          all those features that are general to all the
          subclasses.                       More generalized
                                                 Person                                        (superclasses)



                                  Employee                  Customer




         Paid weekly         Paid monthly         Paid hourly                                More specialized
                                                                                              (subclasses)

         Source: David William Brown, An Intro to Object-Oriented   Analysis (Wiley, 2002), p. 227-230
         Source: Bennett, McRobb, and Farmer, presentation for Object-Oriented Systems Analysis and Design
Features of generalization
42


        The features of generalization, in terms of OO, are:
          Inheritance

          Transitive   nature of inheritance (polymorphism)
Inheritance
43

        Inheritance is the facility by which a class A has
         implicitly defined upon it each of the attributes and
         operations of another class B.
          A is a superclass of B
          B is a subclass of A

        Inheritance enables one to reuse existing code by
         taking advantage of similarities between classes.
                            Class A                 Base Class
                                      Superclass



         The UML modeling
         notation for
         inheritance


                            Class B   Subclass     Derived Class
Inheritance
44


      SupportStaff                                                     Superclass

     name                                       Employee
     phoneNumber
     address                                 name
     hourlyWage                              phoneNumber
                                             address
     WageContract()
     CalculateTax()                          CalculateTax()
     PayTuition()
     DropCourse()


                       OR
        Professor            SupportStaff                         Professor
     name                   hourlyWage                        salary
     phoneNumber            WageContract()
     address                                                  TeachCourse()
     salary                                                   DevelopCourse()
     TeachCourse()
     CalculateTax()
     DevelopCourse()                             Subclasses


                            Both the SupportStaff and Professor classes inherit the
                            methods and attributes of the Employee class.
Inheritance
45


             Person

      can be a




                      is a


            Student
Inheritance
46


        Inheritance is the representation of an is a, is like,
         is kind of relationship between two classes.
          e.g., a Student is a Person, a Professor is kind of a
           Person
          is a relationships are best.

        With inheritance, you define a new class that
         encapsulates the similarities between two classes
          e.g.,for Student and Professor, the new class was
           Person, which contains the attributes and methods
           contained in both.
Inheritance Tips
47

         Look for similarities
              whenever you have similarities between two or more classes
               (either attributes or methods), you probably have an
               opportunity for inheritance.
         Look for existing classes
              when you create a new class, you may already have an
               existing class to which it is similar. Perhaps you can inherit
               from this existing class and code just the differences.
         Follow the sentence rule
              It should make sense to use the classes in one of the
               sentences:
               "a X is a Y", "a X is a kind of Y", or "a X is like a Y"


         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.148-9
Inheritance Tips
48


         Avoid implementation inheritance
            i.e.,
                 don't apply inheritance just to use a feature of
             another class if the sentence rule does not apply.
            Be cautious of "is like a" applications of inheritance
             (more on this later).
         Inherit everything
            the  subclass should inherit all features of its superclass.
            i.e., you shouldn't say "X is a Y, except for …"




         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.148-9
Inheritance Exercise
49

        Create a subclass hierarchy using inheritance
            You will need to create the superclasses

                    Penguin             Sparrow          Duck



                     Tuna               Salmon
Inheritance Exercise
50


        Create a vehicle subclass hierarchy using inheritance
            You will need to create the superclasses.


             Horse-drawn Vehicle    Person-Powered Vehicle     Gas-Powered Vehicle


             Wind-Powered Vehicle   Electric-Powered Vehicle        Sailboat


                     Car                    Bicycle                Skateboard


                   Chariot                Motorcycle               Hang glider


                    Truck                  Carriage                   LRT
Inheritance Exercise
51


                                                                  Vehicle



                                        Engine                                  No Engine




                   Gas Powered    Electric Powered             Horse-Drawn      Person Powered        Wind Powered




     Car   Motorcycle     Truck   LRT                Chariot        Carriage   Bike     Skateboard   Sailboat    Hang Glider
Inheritance in Java
52


                                  Person




                     Student                 Professor


     public class Person
     {
       // data members and methods here
     }


     public class Student extends Person
     {

     }

     public class Professor extends Person
     {

     }
Inheritance in C#
53


                                     Person




                     Student                  Professor


     public class Person
     {
       // data members and methods here
     }


     public class Student : Person
     {

     }

     public class Professor : Person {

     }
public class Employee {
       private String _employeeName;
       private String _employeeDept;
       private int _yearsService;

         public Employee(String name, String dept, int years) {
            _employeeName=name; _employeeDept=dept; _yearsService=years;
         }

         public   String getName() { return _employeeName; }
         public   String getDept() { return _employeeDept; }
         public   int getYearsService() { return _yearsService; }
         public   double getHolidays() { return 20.0; }
     }


     public class Technician extends Employee {
        private int m_serviceCalls;

         public Technician(String name, String dept, int years) {
            super(name, dept, years);
         }                                                                             Invokes constructor
                                                                                       from superclass
         public int getServiceCalls() { return m_serviceCalls; }
     }

     public class Manager extends Employee {

         public Manager(String name, String dept, int years) {
            super(name, dept, years);
         }

         public double getHolidays() { return 30.0; }
     }                                                                     overrides
54
Using the Classes
55


      class EmployeeTest
      {
        public static void main(String[] args)
        {
                Employee fred = new Employee("Fred", "IS", 15);
                Manager dave = new Manager("Dave", "Acct", 25);
                Technician sue = new Technician("Sue", "IS", 10);

                 System.out.println(fred.getName()+ fred.getHolidays());
                 System.out.println(dave.getName() + dave.getHolidays());
                 System.out.println(sue.getName() + sue.getHolidays());
          }
      }


      output

      Fred20.0
      Dave30.0
      Sue20.0
Abstract and Concrete classes
56


        An abstract class is one that can not have objects
         instantiated from it.
          Indiagrams, an abstract class is indicated via italics
          When italics are impractical (e.g., whiteboards,
           blackboards), then use the stereotype {abstract}
        A concrete class is one that can have objects
         instantiated from it.
                                                             {abstract}
                     Person                                   Window




           Student            Professor   PopUpWindow   DialogWindow      FormWindow
Abstract and Concrete classes
57


        Abstract classes allow you to do either or both:
          Specify   the required interface of concrete classes that
           will be implemented by the concrete subclasses.
          Specify the implementation of common functionality
           (i.e., implement members).
Abstract and Concrete classes
58


        For example, let's imagine that for some health
         management software for a veterinarian, we've
         come up with the following concrete objects, which
         will correspond to the actual animals coming into
         the vets. Now try to group them under one or more
         abstract classes.
            Dog        Cat


           Mouse      Rabbit     Iguana   Geeko
Abstract and Concrete class example
59


                                                               Animal




                                Mammal                                                    Reptile




          Mouse           Dog            Rabbit          Cat                        Iguana          Geeko




       Mammal and Animal are abstract classes, since it wouldn't be a mammal that comes in to
       get treated, but a concrete kind of mammal, such as a dog or cat. That is, it is unlikely
       that the veterinarian wouldn't know what kind of mammal or animal he or she was
       treating.
Abstract Methods
60

        Methods can also be abstract.
        Java and C# let you define a method or method
         without implementing it by declaring the method with
         the abstract modifier.
            This is useful for a superclass, in that you want the subclass
             to inherit the method signature (i.e., the interface), but the
             subclasses implement the method.
        Only instance methods can be abstract
            That is, static methods cannot be abstract
        if a class contains an abstract method, then the class
         itself must also be declared abstract.
Abstract Class Example (java)
61   public abstract class Shape {
        ...                            Note!
        public abstract double area();
        public abstract double circumference();
        public int getId() { return _id; };                             Shape
     }                                                            _id
                                                                  area()
     public class Circle extends Shape {                          circumference()
         private double m_radius;                                 getId()
     ...
         public double area() {
           return 3.14159 * m_radius * m_radius;         Circle                     Rectangle
         }                                         m_radius                     m_width
         public double circumference() {                                        m_height
           return 2.0 * 3.14159 * m_radius;        area()
         }                                                                      area()
                                                   circumference()
                                                                                circumference()
     ...                                           setRadius()
                                                                                setWidth()
     }                                                                          setHeight()
     public class Rectangle extends Shape {
         private double m_width, m_height;
     ...
         public double area() {
           return m_width * m_height;
         }
         public double circumference() {
           return 2.0 * (m_width + m_height);
         }
     ...
     }
Abstract Class Example (C#)
62


     public abstract class Shape {
        ...
        public abstract double area();            Note that in C# abstract
        public abstract double circumference
        {                                         properties have a different
               get ;                              syntax.
        }
        public int getId() { return _id; };
     }

     public class Circle extends Shape {
         private double _radius;
     ...                                          Note as well the necessity of
         public override double area() {
           return 3.14159 * _radius * _radius;    adding the override key word to
         }                                        the concrete implementation.
         public override double circumference {
           get {
              return 2.0 * 3.14159 * _radius;
           }
         }
     ...
     }
Another Abstract Class Example
63


         abstract                      Employee
         class
                                m_employeeName
                                m_employeeDept
                                m_yearsService

                                getName()
                                                         concrete
                                getDept()
                                                         methods
         abstract               getYearsService()
         method                 getHolidays()




                         Technician                 Manager

                      m_serviceCalls
     implementation
                      getHolidays()           getHolidays()
                      getServiceCalls()
Abstract Class and Method Example
64


      public abstract class Employee {                              Employee
      ...
          public abstract double getHolidays();              m_employeeName
      ...                                                    m_employeeDept
      }                                                      m_yearsService

                                                             getName()
                                                             getDept()
                                                             getYearsService()
                                                             getHolidays()
      public class Technician extends Employee {
      ...
          public getHolidays() { return 15.0; }
      ...
      }                                               Technician                 Manager

      public class Manager extends Employee {      m_serviceCalls
      ...
                                                   getHolidays()           getHolidays()
          public getHolidays() { return 30.0; }
                                                   getServiceCalls()
      ...
      }
Using the Classes
65


      class EmployeeTest
      {
        public static void main(String[] args)
        {
          //Employee fred = new Employee("Fred", "IS", 15);
          Manager dave = new Manager("Dave", "Acct", 25);
          Technician sue = new Technician("Sue", "IS", 10);

              //System.out.println(fred.getName()+ fred.getHolidays());
              System.out.println(dave.getName() + dave.getHolidays());
              System.out.println(sue.getName() + sue.getHolidays());
          }
      }




                                                                          These lines will give
      output                                                              compile error if
                                                                          uncommented.
      Dave30.0
      Sue15.0
Substitutability
66

         Substitutability refers to the principle that subtypes must
          be substitutable for their supertypes.
            That is, if I write code assuming I have the superclass, it
             should work with any subclass.
            e.g., if I wrote code assuming I have a Person object, it
             should work even if I have a Student or Professor object
         Also referred to as the Liskov Substitution Principle (LSP)
         Substitutability is possible due to the polymorphic
          nature of inheritance.
                              Person




                 Student                   Professor




         Source: Martin Fowler, UML Distilled, 3rd Edition (Addison-Wesley, 2003), p.45-6.
Polymorphism
67

         Polymorphism is:
              the ability to select different methods according to the actual type of an object.
              the ability to manipulate objects of distinct classes using only the knowledge of their
               shared members.
         It allows us to write several versions of a method in different classes of a subclass
          hierarchy and give them all the same name.
         The subclass version of an attribute or method is said to override the version from
          the superclass.
                                                                                               Shape
                                                                                        setWidth()
                                                                                        setHeight()
                                                                                        getArea()




                                                                             Rectangle                    Triangle

                                                                         getArea()                    getArea()

         Source: David William Brown, An Intro to Object-Oriented Analysis (Wiley, 2002), p. 235
Shape
         Polymorphism                                setWidth()
                                                     setHeight()
                                                     getArea()
68



                                            Rectangle                  Triangle
                                         getArea()                 getArea()


     public class Shape {                                 public class Rectangle extends Shape {
        double width, height;                                public double getArea() {
        public abstract double getArea();                      return (width * height);
                                                             }
         public void setWidth(double newWidth) {          }
            width = newWidth;
         }
         public void setHeight(double newHeight) {        public class Triangle extends Shape {
            height = newHeight;                              public double getArea() {
         }                                                     return (0.5 * width * height);
     }                                                       }
                                                          }

     ...
     Rectangle myRect = new Rectangle();
     myRect.setWidth(5);
     myRect.setHeight(4);
     System.out.println myRect.getArea();
     ...
Polymorphism and
69
     Substitutability
        Polymorphism allows us to program in a way
         consistent with LSP.
          Thatis, I write code assuming I have the
           superclass, it should work with any subclass.

                                Shape                     ...
                          _id                             Shape myRect = new Rectangle();
                          area()                          Shape myCircle = new Circle();
                          circumference()                 ...
                          getId()                         myRect.setWidth(50);
                                                          myRect.setHeight(100);
                 Circle                     Rectangle     myCircle.setRadius(45);
           m_radius                     m_width           ...
                                        m_height          System.out.println( myRect.area() );
           area()                       area()            System.out.println( myCircle.area() );
           circumference()                                ...
                                        circumference()
           setRadius()
                                        setWidth()
                                        setHeight()
Polymorphism and Substitutability
70



                          Shape                     ...
                    _id                             Rectangle myRect = new Rectangle();
                    area()                          Circle myCircle = new Circle();
                    circumference()                 ...
                    getId()                         myRect.setWidth(50);
                                                    myRect.setHeight(100);
           Circle                     Rectangle     myCircle.setRadius(45);
     m_radius                     m_width           ...
                                  m_height          print(myRect);
     area()                       area()
                                                    print(myCircle);
     circumference()                                ...
                                  circumference()
     setRadius()
                                  setWidth()
                                  setHeight()

                                                    private void print(Shape s)
                                                    {
                                                       System.out.println("Id=" + s.getId() );
                                                       System.out.println("Area=" + s.area() );
                                                    }
Single and multiple inheritance
71


         When a class inherits from only one other class, this
          is called single inheritance.
         When a class inherits from two or more classes, this
          is called multiple inheritance.
            Most    OO languages do not support multiple
               inheritance (Java, C#, Smalltalk do not, but C++ does).
                        Person                                                   Bird                   Lizard




           Student                  Professor                                                  Dragon




                     Single Inheritance                                                 Multiple Inheritance


         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.150-1
Java and C# Interfaces
72

        Sometimes we may want a class to inherit from more than one class.
         Given, however, that Java and C# do not allow multiple inheritance,
         what can we do?
            we can use an interface for an indirect way to achieve multiple
             inheritance.
        An interface contains only abstract methods and/or constants (no
         data members).
            In other words, an interface is even more abstract than an abstract class.
        An interface thus specifies the required interface that will be
         implemented by the concrete subclasses.
            It requires another class to implement the methods of the specification.
        An interface is not part of a class hierarchy.
            That is, unrelated classes can implement the same interface.
            A class can implement more than one interface.
Interface Example
73

        A university system has a Student, a Professor, and a
         SupportStaff classes.
           Students pay tutition, register in courses, receive grades, etc
          Professors teach course, pick textbooks, supervise students, attend
            department meetings, pay union dues, etc
          Support Staff answer phones, clean the floors, fix computers, etc.
        All three are subtypes of the Person supertype.
          Persons have names, addresses, birthdays, etc
        However, it is possible that a Student may teach a course
         (and then pick textbooks), but not supervise other students,
         attend department meetings, or pay dues.
                        Person             
                                           This isn’t right: No multiple inheritance allowed.

                                           As well, this isn’t right because a Student is not always a
             Student   Professor   Staff   type of Professor
Solution: Use an Interface
74


        Create an interface usable by both the Professor
         and Student classes.
        The methods pertaining to the shared role of
         Teacher can then be placed in the interface.
                        Person




          Student     Professor   Staff



             <<interface>>
               Teacher
Solution: Use an Interface
75


                                      Person

                              getName()
                              getAddress()
                              getBirthday()




           Student                   Professor          Staff

      registerCourse()        attendMeeting()      answerPhone()
      payTuition()            payDues()            fixComputer()
                              superviseStudent()




                     <<interface>>
                       Teacher
                 teachCourse()
                 pickTextBook()
Implementing Interfaces (Java)
76
      public interface Teacher
      {
        public void teachCourse();
        public void pickTextBook();
      }

      class Professor extends Person implements Teacher
      {
        public void teachCourse() {
          ...
        }
        public void pickTextbook() {
          ...
        }
        // other methods here
        ...
      }

      class Student extends Person implements Teacher
      {
        public void teachCourse() {
          ...
        }
        public void pickTextbook() {
          ...
        }
        // other methods here
        ...
      }
Implementing Interfaces (C#)
77


     interface Teacher
     {                                          Note that in C# interfaces (and methods
       void teachCourse();                      inside them) are implicitly declared as
       void pickTextBook();
     }                                          public.

     class Professor extends Person : Teacher
                                                Note that in C# implementing interfaces
     {                                          uses same syntax as inheritance.
       public void teachCourse() {
         ...
       }                                        Note that unlike abstract C#
       public void pickTextbook() {             methods/properties, when implementing
         ...
       }                                        interfaces there is no need for override
       // other methods here                    keyword.
       ...
     }
Sealed Classes (C#)
78


        In C#, you can define a class to be sealed.
          This means that you can never derive classes from it.
          Are typically used when creating a framework of
           classes to be used by other unknown developers.
                 Sometimes subclassing an existing class might cause strange
                  behavior in the base class (if not expecting subclassing).

          public sealed class Shape {

              …
          }
Two Types of Inheritance
79


        there are two types of inheritance:
          Implementation   inheritance
          Interface inheritance
Two Types of Inheritance
80


                                                                  ...
                                     Person                       Person s = new Professor();
                             getName()                            Person p = new Student();
                             getAddress()                         ...
                             getBirthday()                        System.out.println( s.getName() );
                                                                  System.out.println( p.getName() );
                                                                  ...

                                                                  Implementation inheritance
          Student                   Professor          Staff

     registerCourse()        attendMeeting()      answerPhone()
     payTuition()            payDues()            fixComputer()
                             superviseStudent()




                    <<interface>>                                 ...
                      Teacher                                     Teacher t = new Professor();
                teachCourse()
                                                                  Teacher t = new Student();
                pickTextBook()                                    ...
                                                                  s.teachCourse();
                                                                  t.teachCourse();
                                                                  ...

                                                                  Interface inheritance
Digression on UML Class & Object Notation
81


       Customer
                        Customer                 Customer             Name compartment
                     m_name
                                             m_name
                     m_address
                     m_phone
                                             m_address                Attribute compartment
                                             m_phone
                                             getName()
                                             getPhone()               Operation compartment




         «entity»                  stereotype
        Customer




                         fred:Customer
     fred:Customer
                     m_name=Randy
                     m_address=123 Any Ave                  Objects
                     m_phone=123-4567
UML Attribute Compartment
82

      visibility              name       multiplicity: type=initialValue


        optional             mandatory               optional




           Customer

      -m_name
      -m_address
      -m_phone: String
      -m_age:int=0
      +Children[]
      #salary
      +numCustomers               static attribute




       +                 public visibility
       -                 private visibility
       #                 protected visibility
UML Operation Compartment
83


     visibility             name ( parameterName: parameterType, ...): returnType


      optional           mandatory             optional                    optional



                 Customer

      m_name
      m_address
      m_phone
      numCustomers

      getName()                                           Customer
      getPhone(): String
      setName(name: String)
      setPhone(phone: String): void               Customer()
      getNumCustomers(): int                      Customer(name: String)


                                                  constructors
UML Tools
84




            Some commercial UML tools modify the look of standard UML in order
            to make it “easier” to understand.
Generalization Exercise
85


        Create a subclass hierarchy using inheritance
          There    is a problem here in this exercise. Can you find
           it?
                  Car               Engine          Car Body



                 Chassis           Carburetor



                 Piston              Roof


                 Fender
Generalization Exercise ??
86

                                        Car




               Engine               Chassis      Car Body               This isn’t correct. Why not?




     Carburetor            Piston             Roof          Fender




                                        Car

                                                                             This is correct. Why?

                                                                     This is a whole-part hierarchy,
                                                                     not a generalization-specialization
                  Engine            Chassis      Car Body            hierarchy.




      Carburetor           Piston             Roof          Fender
Aggregation Relationship
87

        Aggregation is a relationship between two classes where
         the instances of one class are in some way parts, members,
         or contents of the instances of the other.
        That is, two classes have a “has a” and “part of”
         relationship.
            e.g. a car has a steering wheel; a steering wheel is part of a car.
        Two varieties
            Whole-Part (or simply regular aggregation)
            Composition (sometimes called strong aggregation).
                Each part is associated to only one whole
                A part cannot exist by itself; that is, it can only exist as part of the
                 whole.
                      E.g, in a medical system, Arms and Legs and Heads may be separate
                       classes, but would be in a composition aggregation relationship with a Body
                       class.
88


Diagramming Aggregation
               Whole




     Part A            Part B




         Whole                  Whole             Whole



                                   1..*
              Part              Part               Part

                                          Filled diamond indicates composition.
          Whole




Part A                 Part B
Diagramming Aggregation
89


                                             Car
                                     1             1



                                                              1
                     1

                  Engine                 Chassis          Car Body
              1                                               1      1

       1..*                   1..*                       1               4


     Carburetor            Piston                      Roof          Fender
Aggregation Tips
90

         Apply the sentence rule
              It should make sense to say “the part IS PART OF the whole”
         It should be a part in the real world
         You should be interested in the part
              e.g., a system for an aircraft maintenance system would be
               interested in the fact that engines as part of the whole
               plane, but an air traffic control system would only be
               interested in the whole plane, not the parts.
         Show multiplicity
         Could be ignored
              Some authors are now suggesting that aggregation be
               replaced simply with association.

         Source: Martin Fowler, UML Distilled, 3rd Edition (Addison-Wesley, 2003), p.45-6.
         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p. 160
Association Relationship
91


         In the real word, objects have relationships, or
          associations, with other objects.
            e.g.,   students TAKE courses, professors GRADE students,
               lions EAT antelopes, etc.




         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.152-3
Association Relationship
92


         An association is a structural or logical connection
          between classes.
            Association describes possible links between objects.
            Associations are assumed to be bidirectional (both
             classes know about each other)
                                          association name
            Class A                                                             Class B



                                                takes
           Student                                                              Course



                                                holds
          Employee                                                             Position


         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.152-3
Association Exercise
93


        Describe the associations between the following
         objects via a diagram.
         Student   Course   Professor   Classroom
Association Exercise
94


                takes                  is in
      Student           Course                 Classroom



                             teaches




                        Professor
Association Adornments
95


        We can add these optional adornments to our
         association diagram:
             The name that indicates the name of the relationship, with an
              optional triangle that points in the direction you should read the
              name.
                Student
                                        
                                    takes
                                                   Course

             The cardinality (how many) and
             Optionality (is it required or optional) of an association
             The roles that a class may play in an association
                Student
                                        
                                    takes
                                                   Course
                                                            Thus, a Student, in her role as a
                                                            student, takes a Course.
                          student

         teaching                                           A Student, in her role as a
         assistant                                          teaching assistant, assists with a
                                                            Course.
                                              
                                    assists with
Multiplicity
96


        UML combines cardinality and
         optionality into single concept of                            multiplicity   .
         Indicator               Meaning
         0..1                    zero or one
         1                       one only
         0..*                    zero or more
         1..*                    one or more
         n                       only n (where n >1)
         0..n                    zero to n (where n > 1)
         1..n                    1 to n (where n > 1)


                     Cardinality A                   Cardinality B
                                         label
          Class A                                                    Class B




          Student
                     0..*                    
                                         takes               1..*
                                                                     Course
Association Exercise
97


        Add multiplicity indicators to your association
         diagram
                   takes                   is in
         Student            Course                 Classroom



                                 teaches




                            Professor
Association Exercise
98




                       takes                             is in
                0..*           1..*               0..*           1
      Student                         Course                         Classroom

                                           0..*

                                           teaches


                                           1..*

                                      Professor
Implementing Associations
99


         Associations are implemented through a
          combination of attributes and methods.
            e.g., Student TAKES a Course
            e.g., Student class might have addCourse and
             removeCourse methods, with a corresponding courses
             array or vector list to keep track of the courses a
             student is taking
            Likewise, the Course class might also have addStudent
             and removeStudent methods.


         Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.157-8
Implementing Bidirectional Associations
100

                        is in
                 0..*           1
       Course                       Classroom


       class Course
       {
         private String _name;
         private String _number;
         private Classroom _room;
         ...

         public void setClassRoom(Classroom r)
         {
           _room = r;
           r.AddCourse(this);
         }                             class Classroom
       ...                             {
       }                                 private String _roomNum;
                                         private Collection _courses;
                                         ...
                                         public AddCourse(Course c) {
                                           _courses.add(c);
                                         }
                                         ...
                                       }
Bidirectional associations
101


         In a bidirectional association, both objects in the
          relationship are linked to each other.
           Inprevious example, both course and classroom had
            association to the other.
Bidirectional associations
102


          Bidirectional associations are more difficult to
           implement (since you need to keep them
           synchronized without circularity).
      class Course {
        private Classroom _room;
        ...

          public void setClassRoom(Classroom r)
          {
            _room = r;                   class Classroom
            r.AddCourse(this);           {
          }                                private String _roomNum;
          ...                              private Collection _courses;
      }                                       ...
                                              public AddCourse(Course c) {
                    Example of circular         _courses.add(c);
                    association                 c.setClassRoom(this);
                                              }
                                              ...
                                          }
Unidirectional associations
103


         Unidirectional associations are usually preferable.
               They contain fewer dependencies between classes and are
                thus easier to implement and maintain.
Unidirectional associations
104


         In UML, this is referred to as the navigability of the
          relationship
                                 is in    1
               Course                         Classroom



      class Course {
        private Classroom _room;
        ...

        public void setClassRoom(Classroom r)
        {
           _room = r;
        }                                     class Classroom
        ...                                   {
      }                                         private String _roomNum;
                                                ...
        Example of unidirectional association
                                              }

                                                          NOTE: Classroom "knows" nothing
                                                          of the Course class
Navigability
105


          Navigability refers to ability to traverse from
           object of one class to an object of another class.




          Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 154-5.
Navigability
106


          Means messages can only be sent in the direction of
           the arrow.
                                                                                           Thus, a Product
                                          not navigable                                    object does not
                                    1                        *                             contain an Order link,
                   Order                                           Product                 but an Order object
                                                                                           does contain a
                                                                                           collection of Product
                                            navigable                                      links.




                                    1                        *                           If no arrows, then
                   Order                                           Product               the relationship is
                                                                                         bidirectional.


          Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 154-5.
Aggregation versus Association
107


         An aggregation is a complex object
          composed of other objects
         An association is used when one object
          wants another object to perform a                                                 Class     Class


          service for it.
           Associations  are typically an interaction                                      Student   Student




              described by a verb.
         Nonetheless, the dividing lines between
          these two relationships is not always
          clear.
          Source: Matt Weisfeld, The Object-Oriented Thought Process (Sams, 2000), p. 180
Dependency
108


          A dependency is a relationship between two
           elements where a change in one, affects the other.
             Also       referred to as the "uses" relationship
          Typically used to indicate that one class uses
           another, but the usage is not really an association.
             However,    other relationships also imply a dependency
                relationship as well.




          Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 162-3.
Dependency
109


         We generally try to reduce the dependencies
          between classes
         One can almost never show all the dependencies in
          a class diagram.
           Instead,if the dependency is "interesting" or "relevant",
            then show it.
Dependency
110



         Dependencies generated (in class diagrams) by:
           An      operation of class A needs a parameter of class
            B
           An operation of class A returns a value of class B

           An operation of class A uses an object of class B
            somewhere in its implementation, but not as an
            attribute.A                                            B


           +someMethod(in value : B)
           +otherMethod() : B
           +doSomething()              void doSomething() {
                                          ...
                                          B myB = new B();
                                          // use myB in some way
                                          ...
                                       }
Dependency Example
111




                                                                             How? Where?


       fillWithGasoline($20)
                                                 Car



                                            GasStation


                                         +getGas(money)



       There are several different ways that this dependency/uses relationship could be implemented




      Source: Arthur Riel, Object-Orientec Deisgn Heuristics (Addison-Wesley, 1996).
Dependency Example
112

      fillWithGasoline($20, aStation)
                                                 Car

                                                        getGas($20)


                                  aStation: GasStation

       1. Pass gas station object as parameter in original message




       fillWithGasoline($20)                                          Car
                                                  Car

                                                        getGas($20)         Car

                                    GlobalStation: GasStation
                                                                              Car
       2. All Car objects use a global gas station whose name we know
Dependency Example
113




                                                          GasStation gs = new GasStation();
                                                          gs.getGas(money);
      fillWithGasoline($20)
                                                    Car

      3. Car builds a Gas Station for the fill up
Relationship Exercise
114


         Describe the relationships (association, aggregation,
          inheritance) between the following objects via a
          diagram (don’t worry about adornments).
           Keyboard        Mouse        Computer      RAM




           Hard Drive       CPU          Printer    Scanner




          Floppy Drive   Disk Storage   Monitor    Motherboard




            Chipset       CD Drive
Relationship Exercise
115




                                         Disk Storage                                     Chipset




           RAM         Floppy Disk           CD Drive              Hard Drive        Motherboard              CPU




                                                        Computer




                 Keyboard            Mouse               Printer                Monitor             Scanner

More Related Content

What's hot

Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and DesignDr. C.V. Suresh Babu
 
Object oriented architecture in erp
Object  oriented architecture in erpObject  oriented architecture in erp
Object oriented architecture in erpPreyanshu Saini
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering conceptsKomal Singh
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Ricardo Quintero
 
Cs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportCs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportKhushboo Wadhwani
 
Design Patterns
Design PatternsDesign Patterns
Design Patternssoms_1
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Ricardo Quintero
 
A&D - Object Oriented Design using UML
A&D - Object Oriented Design using UMLA&D - Object Oriented Design using UML
A&D - Object Oriented Design using UMLvinay arora
 
Slide 5 Class Diagram
Slide 5 Class DiagramSlide 5 Class Diagram
Slide 5 Class DiagramNiloy Rocker
 
Object Oriented Analysis and Design with UML2 part2
Object Oriented Analysis and Design with UML2 part2Object Oriented Analysis and Design with UML2 part2
Object Oriented Analysis and Design with UML2 part2Haitham Raik
 
Brief introduction to Object Oriented Analysis and Design
Brief introduction to Object Oriented Analysis and DesignBrief introduction to Object Oriented Analysis and Design
Brief introduction to Object Oriented Analysis and DesignAmrullah Zunzunia
 
Abstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAbstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAhmed Nobi
 
Object Oriented Programming using C++ Part II
Object Oriented Programming using C++ Part IIObject Oriented Programming using C++ Part II
Object Oriented Programming using C++ Part IIAjit Nayak
 
Object Oriented Analysis And Design
Object Oriented Analysis And DesignObject Oriented Analysis And Design
Object Oriented Analysis And DesignSahil Mahajan
 

What's hot (20)

Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
 
Object oriented architecture in erp
Object  oriented architecture in erpObject  oriented architecture in erp
Object oriented architecture in erp
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering concepts
 
Design pattern
Design patternDesign pattern
Design pattern
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Cs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportCs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ report
 
Ooad ppt
Ooad pptOoad ppt
Ooad ppt
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Ooad unit 1
Ooad unit 1Ooad unit 1
Ooad unit 1
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1
 
Domain Modeling
Domain ModelingDomain Modeling
Domain Modeling
 
A&D - Object Oriented Design using UML
A&D - Object Oriented Design using UMLA&D - Object Oriented Design using UML
A&D - Object Oriented Design using UML
 
Introduction to OOAD
Introduction to OOADIntroduction to OOAD
Introduction to OOAD
 
Slide 5 Class Diagram
Slide 5 Class DiagramSlide 5 Class Diagram
Slide 5 Class Diagram
 
Object Oriented Analysis and Design with UML2 part2
Object Oriented Analysis and Design with UML2 part2Object Oriented Analysis and Design with UML2 part2
Object Oriented Analysis and Design with UML2 part2
 
Brief introduction to Object Oriented Analysis and Design
Brief introduction to Object Oriented Analysis and DesignBrief introduction to Object Oriented Analysis and Design
Brief introduction to Object Oriented Analysis and Design
 
Abstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAbstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and Interfaces
 
Object Oriented Programming using C++ Part II
Object Oriented Programming using C++ Part IIObject Oriented Programming using C++ Part II
Object Oriented Programming using C++ Part II
 
Object Oriented Analysis And Design
Object Oriented Analysis And DesignObject Oriented Analysis And Design
Object Oriented Analysis And Design
 

Viewers also liked

OO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented DevelopmentOO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented DevelopmentRandy Connolly
 
Object oriented methodologies
Object oriented methodologiesObject oriented methodologies
Object oriented methodologiesnaina-rani
 
E learning presentation (update 2012)
E learning presentation (update 2012)E learning presentation (update 2012)
E learning presentation (update 2012)Santiago Moral
 
OO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesOO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesRandy Connolly
 
Global and china obd telematics industry report, 2014 2015
Global and china obd telematics industry report, 2014 2015Global and china obd telematics industry report, 2014 2015
Global and china obd telematics industry report, 2014 2015ResearchInChina
 
Dutch media landscape 2015 Q4 update by Starcom
Dutch media landscape 2015 Q4 update by Starcom Dutch media landscape 2015 Q4 update by Starcom
Dutch media landscape 2015 Q4 update by Starcom starcomNL
 
TBEX15 Asia Thailand Sara Meaney
TBEX15 Asia Thailand Sara MeaneyTBEX15 Asia Thailand Sara Meaney
TBEX15 Asia Thailand Sara MeaneyTBEX
 
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octaviana
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri OctavianaAplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octaviana
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octavianasutrioctavianasitorus
 
Configure h base hadoop and hbase client
Configure h base hadoop and hbase clientConfigure h base hadoop and hbase client
Configure h base hadoop and hbase clientShashwat Shriparv
 
Dedicado a mis amig@s ciberentic@s
Dedicado a mis amig@s ciberentic@sDedicado a mis amig@s ciberentic@s
Dedicado a mis amig@s ciberentic@sstaro G.G
 
Sulucionario electromagnetismo cheng
Sulucionario electromagnetismo cheng Sulucionario electromagnetismo cheng
Sulucionario electromagnetismo cheng Saku Garcia
 
Beautiful Women Of China
Beautiful Women Of ChinaBeautiful Women Of China
Beautiful Women Of ChinaRen
 
Creating the Startup The Accounting Panorama
Creating the Startup The Accounting PanoramaCreating the Startup The Accounting Panorama
Creating the Startup The Accounting PanoramaSteve Lines
 

Viewers also liked (20)

OO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented DevelopmentOO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented Development
 
Object oriented methodologies
Object oriented methodologiesObject oriented methodologies
Object oriented methodologies
 
E learning presentation (update 2012)
E learning presentation (update 2012)E learning presentation (update 2012)
E learning presentation (update 2012)
 
OO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesOO Development 2 - Software Development Methodologies
OO Development 2 - Software Development Methodologies
 
Global and china obd telematics industry report, 2014 2015
Global and china obd telematics industry report, 2014 2015Global and china obd telematics industry report, 2014 2015
Global and china obd telematics industry report, 2014 2015
 
Dutch media landscape 2015 Q4 update by Starcom
Dutch media landscape 2015 Q4 update by Starcom Dutch media landscape 2015 Q4 update by Starcom
Dutch media landscape 2015 Q4 update by Starcom
 
TBEX15 Asia Thailand Sara Meaney
TBEX15 Asia Thailand Sara MeaneyTBEX15 Asia Thailand Sara Meaney
TBEX15 Asia Thailand Sara Meaney
 
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octaviana
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri OctavianaAplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octaviana
Aplikom_Unsri_1. MyBiodata dan keunikan Matematika_Sutri Octaviana
 
Rules around us
Rules around usRules around us
Rules around us
 
Yg Ini 1
Yg Ini 1Yg Ini 1
Yg Ini 1
 
Zhuangzi
ZhuangziZhuangzi
Zhuangzi
 
Configure h base hadoop and hbase client
Configure h base hadoop and hbase clientConfigure h base hadoop and hbase client
Configure h base hadoop and hbase client
 
Dedicado a mis amig@s ciberentic@s
Dedicado a mis amig@s ciberentic@sDedicado a mis amig@s ciberentic@s
Dedicado a mis amig@s ciberentic@s
 
Manual património cultural aula 14 - mosteiro de s. bento s. tirso - cópia
Manual património cultural   aula 14 - mosteiro de s. bento s. tirso - cópiaManual património cultural   aula 14 - mosteiro de s. bento s. tirso - cópia
Manual património cultural aula 14 - mosteiro de s. bento s. tirso - cópia
 
Sulucionario electromagnetismo cheng
Sulucionario electromagnetismo cheng Sulucionario electromagnetismo cheng
Sulucionario electromagnetismo cheng
 
Beautiful Women Of China
Beautiful Women Of ChinaBeautiful Women Of China
Beautiful Women Of China
 
1st Grade Unit 6: Blue jay finds a way
1st Grade Unit 6: Blue jay finds a way1st Grade Unit 6: Blue jay finds a way
1st Grade Unit 6: Blue jay finds a way
 
Creating the Startup The Accounting Panorama
Creating the Startup The Accounting PanoramaCreating the Startup The Accounting Panorama
Creating the Startup The Accounting Panorama
 
C Programming
C ProgrammingC Programming
C Programming
 
англійська мова 3 кл підручник
англійська мова 3 кл підручниканглійська мова 3 кл підручник
англійська мова 3 кл підручник
 

Similar to OO Development 4 - Object Concepts

Synapseindia strcture of dotnet development part 1
Synapseindia strcture of dotnet development part 1Synapseindia strcture of dotnet development part 1
Synapseindia strcture of dotnet development part 1Synapseindiappsdevelopment
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programmingHariz Mustafa
 
SE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignSE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignAmr E. Mohamed
 
Abap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorialsAbap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorialscesarmendez78
 
Object oriented basics
Object oriented basicsObject oriented basics
Object oriented basicsvamshimahi
 
L ab # 07
L ab # 07L ab # 07
L ab # 07Mr SMAK
 
SE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignSE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignAmr E. Mohamed
 
oops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdfoops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdfArpitaJana28
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programmingAmit Soni (CTFL)
 
1207028 634528828886611250
1207028 6345288288866112501207028 634528828886611250
1207028 634528828886611250Akhil Nama
 
introduction-to-object-oriented-programming.ppt
introduction-to-object-oriented-programming.pptintroduction-to-object-oriented-programming.ppt
introduction-to-object-oriented-programming.pptkaavyashruthi
 

Similar to OO Development 4 - Object Concepts (20)

Oops
OopsOops
Oops
 
Synapseindia strcture of dotnet development part 1
Synapseindia strcture of dotnet development part 1Synapseindia strcture of dotnet development part 1
Synapseindia strcture of dotnet development part 1
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programming
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
SE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignSE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and Design
 
OOSD1-unit1_1_16_09.pptx
OOSD1-unit1_1_16_09.pptxOOSD1-unit1_1_16_09.pptx
OOSD1-unit1_1_16_09.pptx
 
Abap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorialsAbap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorials
 
Object oriented basics
Object oriented basicsObject oriented basics
Object oriented basics
 
L ab # 07
L ab # 07L ab # 07
L ab # 07
 
SE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignSE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and Design
 
Oops
OopsOops
Oops
 
python.pptx
python.pptxpython.pptx
python.pptx
 
oops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdfoops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdf
 
Php oop (1)
Php oop (1)Php oop (1)
Php oop (1)
 
Week1
Week1Week1
Week1
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Lab 4 (1).pdf
Lab 4 (1).pdfLab 4 (1).pdf
Lab 4 (1).pdf
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
1207028 634528828886611250
1207028 6345288288866112501207028 634528828886611250
1207028 634528828886611250
 
introduction-to-object-oriented-programming.ppt
introduction-to-object-oriented-programming.pptintroduction-to-object-oriented-programming.ppt
introduction-to-object-oriented-programming.ppt
 

More from Randy Connolly

Ten-Year Anniversary of our CIS Degree
Ten-Year Anniversary of our CIS DegreeTen-Year Anniversary of our CIS Degree
Ten-Year Anniversary of our CIS DegreeRandy Connolly
 
Careers in Computing (2019 Edition)
Careers in Computing (2019 Edition)Careers in Computing (2019 Edition)
Careers in Computing (2019 Edition)Randy Connolly
 
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...Randy Connolly
 
Where is the Internet? (2019 Edition)
Where is the Internet? (2019 Edition)Where is the Internet? (2019 Edition)
Where is the Internet? (2019 Edition)Randy Connolly
 
Modern Web Development (2018)
Modern Web Development (2018)Modern Web Development (2018)
Modern Web Development (2018)Randy Connolly
 
Helping Prospective Students Understand the Computing Disciplines
Helping Prospective Students Understand the Computing DisciplinesHelping Prospective Students Understand the Computing Disciplines
Helping Prospective Students Understand the Computing DisciplinesRandy Connolly
 
Constructing a Web Development Textbook
Constructing a Web Development TextbookConstructing a Web Development Textbook
Constructing a Web Development TextbookRandy Connolly
 
Web Development for Managers
Web Development for ManagersWeb Development for Managers
Web Development for ManagersRandy Connolly
 
Disrupting the Discourse of the "Digital Disruption of _____"
Disrupting the Discourse of the "Digital Disruption of _____"Disrupting the Discourse of the "Digital Disruption of _____"
Disrupting the Discourse of the "Digital Disruption of _____"Randy Connolly
 
17 Ways to Fail Your Courses
17 Ways to Fail Your Courses17 Ways to Fail Your Courses
17 Ways to Fail Your CoursesRandy Connolly
 
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...Randy Connolly
 
Constructing and revising a web development textbook
Constructing and revising a web development textbookConstructing and revising a web development textbook
Constructing and revising a web development textbookRandy Connolly
 
Computing is Not a Rock Band: Student Understanding of the Computing Disciplines
Computing is Not a Rock Band: Student Understanding of the Computing DisciplinesComputing is Not a Rock Band: Student Understanding of the Computing Disciplines
Computing is Not a Rock Band: Student Understanding of the Computing DisciplinesRandy Connolly
 
Citizenship: How do leaders in universities think about and experience citize...
Citizenship: How do leaders in universities think about and experience citize...Citizenship: How do leaders in universities think about and experience citize...
Citizenship: How do leaders in universities think about and experience citize...Randy Connolly
 
Thinking About Technology
Thinking About TechnologyThinking About Technology
Thinking About TechnologyRandy Connolly
 
A longitudinal examination of SIGITE conference submission data
A longitudinal examination of SIGITE conference submission dataA longitudinal examination of SIGITE conference submission data
A longitudinal examination of SIGITE conference submission dataRandy Connolly
 
Is Human Flourishing in the ICT World of the Future Likely?
Is Human Flourishing in the ICT World of the Future Likely?Is Human Flourishing in the ICT World of the Future Likely?
Is Human Flourishing in the ICT World of the Future Likely?Randy Connolly
 
Constructing a Contemporary Textbook
Constructing a Contemporary TextbookConstructing a Contemporary Textbook
Constructing a Contemporary TextbookRandy Connolly
 

More from Randy Connolly (20)

Ten-Year Anniversary of our CIS Degree
Ten-Year Anniversary of our CIS DegreeTen-Year Anniversary of our CIS Degree
Ten-Year Anniversary of our CIS Degree
 
Careers in Computing (2019 Edition)
Careers in Computing (2019 Edition)Careers in Computing (2019 Edition)
Careers in Computing (2019 Edition)
 
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...
Facing Backwards While Stumbling Forwards: The Future of Teaching Web Develop...
 
Where is the Internet? (2019 Edition)
Where is the Internet? (2019 Edition)Where is the Internet? (2019 Edition)
Where is the Internet? (2019 Edition)
 
Modern Web Development (2018)
Modern Web Development (2018)Modern Web Development (2018)
Modern Web Development (2018)
 
Helping Prospective Students Understand the Computing Disciplines
Helping Prospective Students Understand the Computing DisciplinesHelping Prospective Students Understand the Computing Disciplines
Helping Prospective Students Understand the Computing Disciplines
 
Constructing a Web Development Textbook
Constructing a Web Development TextbookConstructing a Web Development Textbook
Constructing a Web Development Textbook
 
Web Development for Managers
Web Development for ManagersWeb Development for Managers
Web Development for Managers
 
Disrupting the Discourse of the "Digital Disruption of _____"
Disrupting the Discourse of the "Digital Disruption of _____"Disrupting the Discourse of the "Digital Disruption of _____"
Disrupting the Discourse of the "Digital Disruption of _____"
 
17 Ways to Fail Your Courses
17 Ways to Fail Your Courses17 Ways to Fail Your Courses
17 Ways to Fail Your Courses
 
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...
Red Fish Blue Fish: Reexamining Student Understanding of the Computing Discip...
 
Constructing and revising a web development textbook
Constructing and revising a web development textbookConstructing and revising a web development textbook
Constructing and revising a web development textbook
 
Computing is Not a Rock Band: Student Understanding of the Computing Disciplines
Computing is Not a Rock Band: Student Understanding of the Computing DisciplinesComputing is Not a Rock Band: Student Understanding of the Computing Disciplines
Computing is Not a Rock Band: Student Understanding of the Computing Disciplines
 
Citizenship: How do leaders in universities think about and experience citize...
Citizenship: How do leaders in universities think about and experience citize...Citizenship: How do leaders in universities think about and experience citize...
Citizenship: How do leaders in universities think about and experience citize...
 
Thinking About Technology
Thinking About TechnologyThinking About Technology
Thinking About Technology
 
A longitudinal examination of SIGITE conference submission data
A longitudinal examination of SIGITE conference submission dataA longitudinal examination of SIGITE conference submission data
A longitudinal examination of SIGITE conference submission data
 
Web Security
Web SecurityWeb Security
Web Security
 
Is Human Flourishing in the ICT World of the Future Likely?
Is Human Flourishing in the ICT World of the Future Likely?Is Human Flourishing in the ICT World of the Future Likely?
Is Human Flourishing in the ICT World of the Future Likely?
 
Constructing a Contemporary Textbook
Constructing a Contemporary TextbookConstructing a Contemporary Textbook
Constructing a Contemporary Textbook
 
CSS: Introduction
CSS: IntroductionCSS: Introduction
CSS: Introduction
 

Recently uploaded

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

OO Development 4 - Object Concepts

  • 1. OBJECT 4 CONCEPTS Understanding basic object-oriented concepts
  • 2. 1 INTRODUCTION 2 METHODOLOGIES 3 MODELS AND UML 4 OBJECT CONCEPTS 5 ANALYSIS 2 6 SOFTWARE DESIGN
  • 3. Goal of Presentation 3  This presentation will cover  object and class  methods and attributes  abstraction, encapsulation, information-hiding, coupling  cohesion, inheritance, association  aggregation, collaboration  messaging, polymorphism, persistence
  • 4. What is an Object? 4  In some way everything can be an object.  In general, an object is a person, place, thing, event, or concept.  Because different people have different perceptions of the same object, what an object is depends upon the point of view of the observer.  “ … for there is nothing either good or bad, but thinking makes it so.”  That is, we describe an object on the basis of the features and behaviors that are important or relevant to us.
  • 5. Abstraction 5  An object is thus an abstraction.  An object is an “abstraction of something in the problem domain, reflecting the capabilities of the system to keep information about it, interact with it, or both.” (Coad and Yourdon) Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 64
  • 6. Abstraction 6  An abstraction is a form of representation that includes only what is useful or interesting from a particular viewpoint.  e.g., a map is an abstract representation, since no map shows every detail of the territory it covers  "A map is not the territory it represents, but if correct, it has a similar structure to the territory, which accounts for its usefulness" -- Alfred Korzybski Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 64
  • 7. Types of Objects 7  Objects are usually classified as  Objects representing physical things  e.g. students, furniture, buildings, classrooms  Objects representing concepts  e.g., courses, departments, loan
  • 8. Class 8  We classify similar objects as a type of thing in order to categorize them and make inferences about their attributes and behavior.  To a child, mommy, daddy, big brother, and aunt Jane are all classified together as people with relatively similar attributes (head, nose, arms) and behaviors (smile, hug, run, etc).  For this reason, a type of object is referred to as a class.  A general type of thing is a superclass, a special type of thing is a subclass. Superclass Person Subclass Subclass Parent Child
  • 9. Class and objects 9  A class is thus a type of thing, and all specific things that fit the general definition of the class are things that belong to the class.  A class is a "blueprint" or description for the objects.  An object is a specific instance of a class.  Objects are thus instantiated (created/defined) from classes  Fred Sue are instances of Student   Eric Jane the Student class These student objects Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.136
  • 10. Class Members 10  Attributes/Data  the things classes "know" (nouns)  a piece of data or information  sometimes called data members or member variables or fields  Methods/Operations/Behaviors  the things classes "do" (verbs)  These define the operations you can perform for the class.  Similar to procedures/functions in other programming languages.
  • 11. Naming classes 11  Class names are typically nouns.  The name of a class generally should be one or two words.  Class names are almost always singular (Student, not Students).  In the real world, you would say “I am a student,” not “I am a students”  In UML, classes are modeled as a rectangle that lists its attributes and methods, or just as a rectangle. Student Student attributes methods UML (Unified Modeling Language) is a diagramming notation for describing software systems. Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.138
  • 12. UML Class Diagrams 12 Student Student Student attributes name -name: String phoneNumber -phoneNumber: String address -address: String methods enrollCourse() +enrollCourse(): void payTuition() +payTuition(): void dropCourse() +dropCourse(): void Student getName() +getName(): String In UML, you can add/remove detail from your class diagrams
  • 13. Interfaces 13  The attributes and methods that a class provides to other classes constitute the class’s interface.  The interface thus completely describes how users of that class interact with the class.  InJava and C#, methods and attributes are designated using either the public, private or protected keyword.
  • 14. Real-world Interface & Implementation 14 Requesting object Interface Implementation Source: Matt Weisfeld, The Object-Oriented Thought Process (Sams, 2000), p.22
  • 15. Encapsulation 15  Perhaps the most important principle in OO is that of encapsulation (also known as information hiding or implementation hiding).  Thisis the principle of separating the implementation of an class from its interface and hiding the implementation from its clients.  Thus, someone who uses a software object will have knowledge of what it can do, but will have no knowledge of how it does it. Source: Meiler Page-Jones, Fundamentals of Object-Oriented Design in UML(Addison-Wesley, 2000), p.12-4
  • 16. Encapsulation 16  Benefits  Maximizes maintainability  making changes to the implementation of a well encapsulated class should have no impact on rest of system.  Decouples content of information from its form of representation  thus the user of an object will not become tied to format of the information. Source: Meiler Page-Jones, Fundamentals of Object-Oriented Design in UML(Addison-Wesley, 2000), p.12-4
  • 17. Encapsulation 17  Encapsulation is implemented through access protection.  Every class, data member and method in a Java or C# program is defined as either public, private, protected or unspecified. A ttribute Permitted A ccess N o acce ss attrib ute Fro m any class in the sam e p ackage pi uc b l Fro m any class anyw he re pa rt ie v N o acce ss fro m o utsid e class ped rc ot te Fro m any class in the sam e p ackage and fro m any sub class anyw he re
  • 18. Variable Scope 18 class 1 class 2 private variable A private variable X private variable B public variable Y public variable C public variable Z ... ...
  • 19. Scope of Member Variables 19 class ScopeClass { private int aPrivate = 1; int aUnknown = 2; public int aPublic = 3; } class ScopeTest { public static void main(String[] args) { ScopeClass aScope = new ScopeClass(); System.out.println("Scope Test"); System.out.println("aPrivate=" + aScope.aPrivate); Generates a compile error System.out.println("aUnknown=" + aScope.aUnknown); System.out.println("aPublic=" + aScope.aPublic); } }
  • 20. Review: Classes 20  Classes are the most fundamental structural element in Java or C#  Every program has at least one class defined.  Data member declarations appear within classes.  Methods appear within classes.  statements appear within methods and properties. class data member declarations method statement method statement statement statement
  • 21. Class Definitions 21 class definition public class Rectangle { data member declaration public double lowerLeftX,lowerLeftY; public double upperRightX,lowerRightY; method definition public double width() { return upperRightX - lowerLeftX; method implementation } method definition public double height() { return upperRightY - lowerLeftY; method implementation } method definition public double area() { method implementation return width() * height(); } ... } Call or invoking the width and height methods defined above.
  • 22. Types of members 22  Two types of members (data members and methods):  static or class members  a member that is shared by all objects of that class  it is called a class member because it belongs to the class, not to a given object.  It is called a static member because it is declared with the static keyword.  instance members  Each instance/object of the class will have a copy of each instance member.
  • 23. Members in a class definition 23 numPersons Shared between all public class Person { objects // class variables static int numPersons; name // instance variables String name; phone String phone; age int age; Each object will get its } own copy Person objects Created later by new statement name phone age Source: Ivor Horton, Beginning Java 2 (Wrox)
  • 24. Instance variables in a class definition 24 ... public class Person { employee // instance variables String name; int age; Creates a memory location to hold reference (memory address) to an object } ... 1. of type employee. No object is created and no memory allocated for object. Person employee; 2. employee = new Person; 2. Creates employee object in memory and sets employee to reference it. employee.name = "Karl Marx"; employee.age = 56; name age 3. name Karl Marx age 56 Person object Source: Ivor Horton, Beginning Java 2 (Wrox) Person object
  • 25. Instance variables in a class definition 25 ... public class Person { // instance variables Creates memory location to reference object and creates employee object in String name; memory and sets employee to reference it. int age; } ... Person employee = new Person; Person boss = new Person; employee employee.name = "Karl Marx"; employee.age = 56; name = Karl Marx age = 56 boss.name = "Adam Smith"; boss.age = 44; Person objects name = Adam Smith age = 44 boss
  • 26. Some Scope Combinations 26  public static  Static variable, that is shared between all instances, and that is available to other classes.  private static  Static variable, that is shared between all instances, and that only available within its class.  public  Instance variable (each instance will have a copy), that is available to other classes.  private  Instance variable (each instance will have a copy), that is only available within its class.  final (java) / const (C#)  Indicates that the value in the variable can not be changed (i.e., it is a constant).
  • 27. Some Scope Combinations class ScopeClass { 27 // data members private static int aPrivateStatic = 1; public static int aPublicStatic = 2; aPrivateStatic = 1 private final static int ONECONSTANT = 10; public final static int TWOCONSTANT = 20; private int aPrivateInstance = 3; aPublicStatic = 2  2000  4000 public int aPublicInstance = 4; } ONECONSTANT = 10 class ScopeTest { TWOCONSTANT = 20 public static void main(String[] args) { ScopeClass xScope = new ScopeClass(); ScopeClass yScope = new ScopeClass(); xScope xScope.aPublicInstance = 77; aPublicInstance=77 yScope.aPublicInstance = 44; aPrivateInstance=3 xScope.aPublicStatic = 2000; yScope.aPublicStatic = 4000; System.out.println(xScope.aPublicInstance); System.out.println(xScope.aPublicStatic); yScope System.out.println(yScope.aPublicInstance); System.out.println(yScope.aPublicStatic); aPublicInstance=44 aPrivateInstance=3 System.out.println(ScopeClass.aPublicStatic); System.out.println(ScopeClass.TWOCONSTANT); } }
  • 28. Accessing data members directly 28 public class Employee { // data members public String name; public double salary; public static int numEmployees; } ... Employee boss = new Employee("Randy"); boss.salary = 50000.0 Is this allowed? Employee.numEmployees = 44; ...
  • 29. Accessing data members directly 29  Direct variable access of data members from other classes is allowed unless the variable is private.  e.g., boss.salary  However, it is strongly discouraged.  With direct access, the class loses its ability to control what values go into an data member (i.e., no longer do we have encapsulation).  e.g., in previous example, user could enter a negative value for salary.
  • 30. Accessors and Mutators 30  In Java, provide accessor and mutator methods for retrieving data values and for setting data values  e.g., getSalary() and setSalary()  To prevent outside direct variable access, use the private modifier. private double salary; public void setSalary(double newSalary) { salary = newSalary; } public double getSalary() { return salary; }  Mutators often need error checking (indeed this is their whole purpose). public(newSalary >= 0) if void setSalary(double newSalary) { salary = newSalary; else throw new Exception("Illegal salary in setSalary"); }
  • 31. Properties 31  In C#, there is a language feature called properties which are used instead of accessors/mutators. private double salary; public double Salary { get { return salary; } set { salary = value; } … double x = Salary; Salary = 50.0;
  • 32. Conventions for Data Members 32  While not necessary, it will make your class’s code more readable and comprehensible to use a naming convention for data members.  Developers often add an underscore (_) or m_ as a prefix or suffix.  e.g., _salary public class Employee { // data members private double _salary; // properties public double Salary { get { return _salary; } set { _salary = value; } }
  • 33. Constructors 33  When an object of a class is created (via new), a special method called a constructor is always invoked.  You can supply your own constructor, or let the compiler supply one (that does nothing).  Constructors are often used to initialize the instance variables for that class.  Two characteristics:  constructor method has same name as the class.  Constructor method never returns a value and must not have a return type specified (not even void). Source: Ivor Horton, Beginning Java 2 (Wrox), p. 177.
  • 34. Constructor 34 public class Person { // data members public String _name; public String _phone; public int _age; ... // class constructor Person employee = new Person(); public Person() { _age = -1; Person boss = new Person(); } ... // class methods Each time a Person object is created, the class // instance methods constructor is called (and as a result, employee._age } and boss._age is initialized to -1)
  • 35. Multiple Constructors 35  You can supply more than one constructor method to a class.  Typically done to provide users with alternate ways of creating an object.  This is called overloading (and can be done with method and constructors) public class Person { ... // instance variables Person employee = new Person; String _name; int _age; Person janitor = new Person(45); // class constructors public Person() { _age = -1; Person boss = new Person(30, "Fred"); } ... public Person(int age) { _age = newAge; } public Person(int age, String name) { _age = age; _name = name; } }
  • 36. Invoking another Constructor (Java) 36 public class Person { ... public Person(int age) { _age = age; } public Person(int age, String name) { this(age); _name = name; } public Person(int age, String name, String address) { this(age, name); _address = address; } }
  • 37. Invoking another Constructor (C#) 37 public class Person { ... public Person(int age) { _age = age; } public Person(int age, String name) : this(age) { _name = name; } public Person(int age, String name, String address) : this(age,name) { _address = address; } }
  • 38. Static Initialization 38  Constructors can only initialize instance data members.  To initialize static data members, you must use either:  When they are declared.  E.g. public class Sample { private static int _count = 0;  Within a static initialization block (Java)  Necessary when static variable must invoke a method  E.g. public class Sample { private static int _count; private static LookupTable _table; static { _count = 0; _table = LoadTableFromFile(); }  Within a static constructor (C#)  E.g. public class Sample { private static int _count; private static LookupTable _table; static Sample() { _count = 0; _table = LoadTableFromFile(); }
  • 39. Method Overloading 39  There are situations where you need a method that does similar things but accept different lists of arguments.  Java and C# allow you to overload a method definition so that the method can accept a different number of arguments.  That is, they allow multiple methods to have the same name, as long as those methods have different lists of arguments.  It makes a method more flexible class Calculator { public int add(int a, int b) { return a + b; ... } Calculator calc = new Calculator(); public double add(double a, double b) { int a = calc(3,5); return a + b; double b = calc(34.56,342.45); } ... }  Method overloading is an important part of object-oriented development  Subclasses can overload methods defined in a superclass.
  • 40. Class Relationships 40  Classes do not exist by themselves themselves, but exist in relationships with other classes.  Kinds of relationship  Generalization (Inheritance)  Aggregation  Association  Dependency
  • 41. Generalization Relationship 41  Classification of objects is hierarchic in nature.  A subclass is said to specialize its superclass(es) by including only certain of the superclass features.  A superclass generalizes its subclasses by including all those features that are general to all the subclasses. More generalized Person (superclasses) Employee Customer Paid weekly Paid monthly Paid hourly More specialized (subclasses) Source: David William Brown, An Intro to Object-Oriented Analysis (Wiley, 2002), p. 227-230 Source: Bennett, McRobb, and Farmer, presentation for Object-Oriented Systems Analysis and Design
  • 42. Features of generalization 42  The features of generalization, in terms of OO, are:  Inheritance  Transitive nature of inheritance (polymorphism)
  • 43. Inheritance 43  Inheritance is the facility by which a class A has implicitly defined upon it each of the attributes and operations of another class B.  A is a superclass of B  B is a subclass of A  Inheritance enables one to reuse existing code by taking advantage of similarities between classes. Class A Base Class Superclass The UML modeling notation for inheritance Class B Subclass Derived Class
  • 44. Inheritance 44 SupportStaff Superclass name Employee phoneNumber address name hourlyWage phoneNumber address WageContract() CalculateTax() CalculateTax() PayTuition() DropCourse() OR Professor SupportStaff Professor name hourlyWage salary phoneNumber WageContract() address TeachCourse() salary DevelopCourse() TeachCourse() CalculateTax() DevelopCourse() Subclasses Both the SupportStaff and Professor classes inherit the methods and attributes of the Employee class.
  • 45. Inheritance 45 Person can be a is a Student
  • 46. Inheritance 46  Inheritance is the representation of an is a, is like, is kind of relationship between two classes.  e.g., a Student is a Person, a Professor is kind of a Person  is a relationships are best.  With inheritance, you define a new class that encapsulates the similarities between two classes  e.g.,for Student and Professor, the new class was Person, which contains the attributes and methods contained in both.
  • 47. Inheritance Tips 47  Look for similarities  whenever you have similarities between two or more classes (either attributes or methods), you probably have an opportunity for inheritance.  Look for existing classes  when you create a new class, you may already have an existing class to which it is similar. Perhaps you can inherit from this existing class and code just the differences.  Follow the sentence rule  It should make sense to use the classes in one of the sentences: "a X is a Y", "a X is a kind of Y", or "a X is like a Y" Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.148-9
  • 48. Inheritance Tips 48  Avoid implementation inheritance  i.e., don't apply inheritance just to use a feature of another class if the sentence rule does not apply.  Be cautious of "is like a" applications of inheritance (more on this later).  Inherit everything  the subclass should inherit all features of its superclass.  i.e., you shouldn't say "X is a Y, except for …" Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.148-9
  • 49. Inheritance Exercise 49  Create a subclass hierarchy using inheritance  You will need to create the superclasses Penguin Sparrow Duck Tuna Salmon
  • 50. Inheritance Exercise 50  Create a vehicle subclass hierarchy using inheritance  You will need to create the superclasses. Horse-drawn Vehicle Person-Powered Vehicle Gas-Powered Vehicle Wind-Powered Vehicle Electric-Powered Vehicle Sailboat Car Bicycle Skateboard Chariot Motorcycle Hang glider Truck Carriage LRT
  • 51. Inheritance Exercise 51 Vehicle Engine No Engine Gas Powered Electric Powered Horse-Drawn Person Powered Wind Powered Car Motorcycle Truck LRT Chariot Carriage Bike Skateboard Sailboat Hang Glider
  • 52. Inheritance in Java 52 Person Student Professor public class Person { // data members and methods here } public class Student extends Person { } public class Professor extends Person { }
  • 53. Inheritance in C# 53 Person Student Professor public class Person { // data members and methods here } public class Student : Person { } public class Professor : Person { }
  • 54. public class Employee { private String _employeeName; private String _employeeDept; private int _yearsService; public Employee(String name, String dept, int years) { _employeeName=name; _employeeDept=dept; _yearsService=years; } public String getName() { return _employeeName; } public String getDept() { return _employeeDept; } public int getYearsService() { return _yearsService; } public double getHolidays() { return 20.0; } } public class Technician extends Employee { private int m_serviceCalls; public Technician(String name, String dept, int years) { super(name, dept, years); } Invokes constructor from superclass public int getServiceCalls() { return m_serviceCalls; } } public class Manager extends Employee { public Manager(String name, String dept, int years) { super(name, dept, years); } public double getHolidays() { return 30.0; } } overrides 54
  • 55. Using the Classes 55 class EmployeeTest { public static void main(String[] args) { Employee fred = new Employee("Fred", "IS", 15); Manager dave = new Manager("Dave", "Acct", 25); Technician sue = new Technician("Sue", "IS", 10); System.out.println(fred.getName()+ fred.getHolidays()); System.out.println(dave.getName() + dave.getHolidays()); System.out.println(sue.getName() + sue.getHolidays()); } } output Fred20.0 Dave30.0 Sue20.0
  • 56. Abstract and Concrete classes 56  An abstract class is one that can not have objects instantiated from it.  Indiagrams, an abstract class is indicated via italics  When italics are impractical (e.g., whiteboards, blackboards), then use the stereotype {abstract}  A concrete class is one that can have objects instantiated from it. {abstract} Person Window Student Professor PopUpWindow DialogWindow FormWindow
  • 57. Abstract and Concrete classes 57  Abstract classes allow you to do either or both:  Specify the required interface of concrete classes that will be implemented by the concrete subclasses.  Specify the implementation of common functionality (i.e., implement members).
  • 58. Abstract and Concrete classes 58  For example, let's imagine that for some health management software for a veterinarian, we've come up with the following concrete objects, which will correspond to the actual animals coming into the vets. Now try to group them under one or more abstract classes. Dog Cat Mouse Rabbit Iguana Geeko
  • 59. Abstract and Concrete class example 59 Animal Mammal Reptile Mouse Dog Rabbit Cat Iguana Geeko Mammal and Animal are abstract classes, since it wouldn't be a mammal that comes in to get treated, but a concrete kind of mammal, such as a dog or cat. That is, it is unlikely that the veterinarian wouldn't know what kind of mammal or animal he or she was treating.
  • 60. Abstract Methods 60  Methods can also be abstract.  Java and C# let you define a method or method without implementing it by declaring the method with the abstract modifier.  This is useful for a superclass, in that you want the subclass to inherit the method signature (i.e., the interface), but the subclasses implement the method.  Only instance methods can be abstract  That is, static methods cannot be abstract  if a class contains an abstract method, then the class itself must also be declared abstract.
  • 61. Abstract Class Example (java) 61 public abstract class Shape { ... Note! public abstract double area(); public abstract double circumference(); public int getId() { return _id; }; Shape } _id area() public class Circle extends Shape { circumference() private double m_radius; getId() ... public double area() { return 3.14159 * m_radius * m_radius; Circle Rectangle } m_radius m_width public double circumference() { m_height return 2.0 * 3.14159 * m_radius; area() } area() circumference() circumference() ... setRadius() setWidth() } setHeight() public class Rectangle extends Shape { private double m_width, m_height; ... public double area() { return m_width * m_height; } public double circumference() { return 2.0 * (m_width + m_height); } ... }
  • 62. Abstract Class Example (C#) 62 public abstract class Shape { ... public abstract double area(); Note that in C# abstract public abstract double circumference { properties have a different get ; syntax. } public int getId() { return _id; }; } public class Circle extends Shape { private double _radius; ... Note as well the necessity of public override double area() { return 3.14159 * _radius * _radius; adding the override key word to } the concrete implementation. public override double circumference { get { return 2.0 * 3.14159 * _radius; } } ... }
  • 63. Another Abstract Class Example 63 abstract Employee class m_employeeName m_employeeDept m_yearsService getName() concrete getDept() methods abstract getYearsService() method getHolidays() Technician Manager m_serviceCalls implementation getHolidays() getHolidays() getServiceCalls()
  • 64. Abstract Class and Method Example 64 public abstract class Employee { Employee ... public abstract double getHolidays(); m_employeeName ... m_employeeDept } m_yearsService getName() getDept() getYearsService() getHolidays() public class Technician extends Employee { ... public getHolidays() { return 15.0; } ... } Technician Manager public class Manager extends Employee { m_serviceCalls ... getHolidays() getHolidays() public getHolidays() { return 30.0; } getServiceCalls() ... }
  • 65. Using the Classes 65 class EmployeeTest { public static void main(String[] args) { //Employee fred = new Employee("Fred", "IS", 15); Manager dave = new Manager("Dave", "Acct", 25); Technician sue = new Technician("Sue", "IS", 10); //System.out.println(fred.getName()+ fred.getHolidays()); System.out.println(dave.getName() + dave.getHolidays()); System.out.println(sue.getName() + sue.getHolidays()); } } These lines will give output compile error if uncommented. Dave30.0 Sue15.0
  • 66. Substitutability 66  Substitutability refers to the principle that subtypes must be substitutable for their supertypes.  That is, if I write code assuming I have the superclass, it should work with any subclass.  e.g., if I wrote code assuming I have a Person object, it should work even if I have a Student or Professor object  Also referred to as the Liskov Substitution Principle (LSP)  Substitutability is possible due to the polymorphic nature of inheritance. Person Student Professor Source: Martin Fowler, UML Distilled, 3rd Edition (Addison-Wesley, 2003), p.45-6.
  • 67. Polymorphism 67  Polymorphism is:  the ability to select different methods according to the actual type of an object.  the ability to manipulate objects of distinct classes using only the knowledge of their shared members.  It allows us to write several versions of a method in different classes of a subclass hierarchy and give them all the same name.  The subclass version of an attribute or method is said to override the version from the superclass. Shape setWidth() setHeight() getArea() Rectangle Triangle getArea() getArea() Source: David William Brown, An Intro to Object-Oriented Analysis (Wiley, 2002), p. 235
  • 68. Shape Polymorphism setWidth() setHeight() getArea() 68 Rectangle Triangle getArea() getArea() public class Shape { public class Rectangle extends Shape { double width, height; public double getArea() { public abstract double getArea(); return (width * height); } public void setWidth(double newWidth) { } width = newWidth; } public void setHeight(double newHeight) { public class Triangle extends Shape { height = newHeight; public double getArea() { } return (0.5 * width * height); } } } ... Rectangle myRect = new Rectangle(); myRect.setWidth(5); myRect.setHeight(4); System.out.println myRect.getArea(); ...
  • 69. Polymorphism and 69 Substitutability  Polymorphism allows us to program in a way consistent with LSP.  Thatis, I write code assuming I have the superclass, it should work with any subclass. Shape ... _id Shape myRect = new Rectangle(); area() Shape myCircle = new Circle(); circumference() ... getId() myRect.setWidth(50); myRect.setHeight(100); Circle Rectangle myCircle.setRadius(45); m_radius m_width ... m_height System.out.println( myRect.area() ); area() area() System.out.println( myCircle.area() ); circumference() ... circumference() setRadius() setWidth() setHeight()
  • 70. Polymorphism and Substitutability 70 Shape ... _id Rectangle myRect = new Rectangle(); area() Circle myCircle = new Circle(); circumference() ... getId() myRect.setWidth(50); myRect.setHeight(100); Circle Rectangle myCircle.setRadius(45); m_radius m_width ... m_height print(myRect); area() area() print(myCircle); circumference() ... circumference() setRadius() setWidth() setHeight() private void print(Shape s) { System.out.println("Id=" + s.getId() ); System.out.println("Area=" + s.area() ); }
  • 71. Single and multiple inheritance 71  When a class inherits from only one other class, this is called single inheritance.  When a class inherits from two or more classes, this is called multiple inheritance.  Most OO languages do not support multiple inheritance (Java, C#, Smalltalk do not, but C++ does). Person Bird Lizard Student Professor Dragon Single Inheritance Multiple Inheritance Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.150-1
  • 72. Java and C# Interfaces 72  Sometimes we may want a class to inherit from more than one class. Given, however, that Java and C# do not allow multiple inheritance, what can we do?  we can use an interface for an indirect way to achieve multiple inheritance.  An interface contains only abstract methods and/or constants (no data members).  In other words, an interface is even more abstract than an abstract class.  An interface thus specifies the required interface that will be implemented by the concrete subclasses.  It requires another class to implement the methods of the specification.  An interface is not part of a class hierarchy.  That is, unrelated classes can implement the same interface.  A class can implement more than one interface.
  • 73. Interface Example 73  A university system has a Student, a Professor, and a SupportStaff classes.  Students pay tutition, register in courses, receive grades, etc  Professors teach course, pick textbooks, supervise students, attend department meetings, pay union dues, etc  Support Staff answer phones, clean the floors, fix computers, etc.  All three are subtypes of the Person supertype.  Persons have names, addresses, birthdays, etc  However, it is possible that a Student may teach a course (and then pick textbooks), but not supervise other students, attend department meetings, or pay dues. Person  This isn’t right: No multiple inheritance allowed. As well, this isn’t right because a Student is not always a Student Professor Staff type of Professor
  • 74. Solution: Use an Interface 74  Create an interface usable by both the Professor and Student classes.  The methods pertaining to the shared role of Teacher can then be placed in the interface. Person Student Professor Staff <<interface>> Teacher
  • 75. Solution: Use an Interface 75 Person getName() getAddress() getBirthday() Student Professor Staff registerCourse() attendMeeting() answerPhone() payTuition() payDues() fixComputer() superviseStudent() <<interface>> Teacher teachCourse() pickTextBook()
  • 76. Implementing Interfaces (Java) 76 public interface Teacher { public void teachCourse(); public void pickTextBook(); } class Professor extends Person implements Teacher { public void teachCourse() { ... } public void pickTextbook() { ... } // other methods here ... } class Student extends Person implements Teacher { public void teachCourse() { ... } public void pickTextbook() { ... } // other methods here ... }
  • 77. Implementing Interfaces (C#) 77 interface Teacher { Note that in C# interfaces (and methods void teachCourse(); inside them) are implicitly declared as void pickTextBook(); } public. class Professor extends Person : Teacher Note that in C# implementing interfaces { uses same syntax as inheritance. public void teachCourse() { ... } Note that unlike abstract C# public void pickTextbook() { methods/properties, when implementing ... } interfaces there is no need for override // other methods here keyword. ... }
  • 78. Sealed Classes (C#) 78  In C#, you can define a class to be sealed.  This means that you can never derive classes from it.  Are typically used when creating a framework of classes to be used by other unknown developers.  Sometimes subclassing an existing class might cause strange behavior in the base class (if not expecting subclassing). public sealed class Shape { … }
  • 79. Two Types of Inheritance 79  there are two types of inheritance:  Implementation inheritance  Interface inheritance
  • 80. Two Types of Inheritance 80 ... Person Person s = new Professor(); getName() Person p = new Student(); getAddress() ... getBirthday() System.out.println( s.getName() ); System.out.println( p.getName() ); ... Implementation inheritance Student Professor Staff registerCourse() attendMeeting() answerPhone() payTuition() payDues() fixComputer() superviseStudent() <<interface>> ... Teacher Teacher t = new Professor(); teachCourse() Teacher t = new Student(); pickTextBook() ... s.teachCourse(); t.teachCourse(); ... Interface inheritance
  • 81. Digression on UML Class & Object Notation 81 Customer Customer Customer Name compartment m_name m_name m_address m_phone m_address Attribute compartment m_phone getName() getPhone() Operation compartment «entity» stereotype Customer fred:Customer fred:Customer m_name=Randy m_address=123 Any Ave Objects m_phone=123-4567
  • 82. UML Attribute Compartment 82 visibility name multiplicity: type=initialValue optional mandatory optional Customer -m_name -m_address -m_phone: String -m_age:int=0 +Children[] #salary +numCustomers static attribute + public visibility - private visibility # protected visibility
  • 83. UML Operation Compartment 83 visibility name ( parameterName: parameterType, ...): returnType optional mandatory optional optional Customer m_name m_address m_phone numCustomers getName() Customer getPhone(): String setName(name: String) setPhone(phone: String): void Customer() getNumCustomers(): int Customer(name: String) constructors
  • 84. UML Tools 84 Some commercial UML tools modify the look of standard UML in order to make it “easier” to understand.
  • 85. Generalization Exercise 85  Create a subclass hierarchy using inheritance  There is a problem here in this exercise. Can you find it? Car Engine Car Body Chassis Carburetor Piston Roof Fender
  • 86. Generalization Exercise ?? 86 Car Engine Chassis Car Body  This isn’t correct. Why not? Carburetor Piston Roof Fender Car  This is correct. Why? This is a whole-part hierarchy, not a generalization-specialization Engine Chassis Car Body hierarchy. Carburetor Piston Roof Fender
  • 87. Aggregation Relationship 87  Aggregation is a relationship between two classes where the instances of one class are in some way parts, members, or contents of the instances of the other.  That is, two classes have a “has a” and “part of” relationship.  e.g. a car has a steering wheel; a steering wheel is part of a car.  Two varieties  Whole-Part (or simply regular aggregation)  Composition (sometimes called strong aggregation).  Each part is associated to only one whole  A part cannot exist by itself; that is, it can only exist as part of the whole.  E.g, in a medical system, Arms and Legs and Heads may be separate classes, but would be in a composition aggregation relationship with a Body class.
  • 88. 88 Diagramming Aggregation Whole Part A Part B Whole Whole Whole 1..* Part Part Part Filled diamond indicates composition. Whole Part A Part B
  • 89. Diagramming Aggregation 89 Car 1 1 1 1 Engine Chassis Car Body 1 1 1 1..* 1..* 1 4 Carburetor Piston Roof Fender
  • 90. Aggregation Tips 90  Apply the sentence rule  It should make sense to say “the part IS PART OF the whole”  It should be a part in the real world  You should be interested in the part  e.g., a system for an aircraft maintenance system would be interested in the fact that engines as part of the whole plane, but an air traffic control system would only be interested in the whole plane, not the parts.  Show multiplicity  Could be ignored  Some authors are now suggesting that aggregation be replaced simply with association. Source: Martin Fowler, UML Distilled, 3rd Edition (Addison-Wesley, 2003), p.45-6. Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p. 160
  • 91. Association Relationship 91  In the real word, objects have relationships, or associations, with other objects.  e.g., students TAKE courses, professors GRADE students, lions EAT antelopes, etc. Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.152-3
  • 92. Association Relationship 92  An association is a structural or logical connection between classes.  Association describes possible links between objects.  Associations are assumed to be bidirectional (both classes know about each other) association name Class A Class B takes Student Course holds Employee Position Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.152-3
  • 93. Association Exercise 93  Describe the associations between the following objects via a diagram. Student Course Professor Classroom
  • 94. Association Exercise 94 takes is in Student Course Classroom teaches Professor
  • 95. Association Adornments 95  We can add these optional adornments to our association diagram:  The name that indicates the name of the relationship, with an optional triangle that points in the direction you should read the name. Student  takes Course  The cardinality (how many) and  Optionality (is it required or optional) of an association  The roles that a class may play in an association Student  takes Course Thus, a Student, in her role as a student, takes a Course. student teaching A Student, in her role as a assistant teaching assistant, assists with a Course.  assists with
  • 96. Multiplicity 96  UML combines cardinality and optionality into single concept of multiplicity . Indicator Meaning 0..1 zero or one 1 one only 0..* zero or more 1..* one or more n only n (where n >1) 0..n zero to n (where n > 1) 1..n 1 to n (where n > 1) Cardinality A Cardinality B label Class A Class B Student 0..*  takes 1..* Course
  • 97. Association Exercise 97  Add multiplicity indicators to your association diagram takes is in Student Course Classroom teaches Professor
  • 98. Association Exercise 98 takes is in 0..* 1..* 0..* 1 Student Course Classroom 0..* teaches 1..* Professor
  • 99. Implementing Associations 99  Associations are implemented through a combination of attributes and methods.  e.g., Student TAKES a Course  e.g., Student class might have addCourse and removeCourse methods, with a corresponding courses array or vector list to keep track of the courses a student is taking  Likewise, the Course class might also have addStudent and removeStudent methods. Source: Scott Ambler, The Object Primer (Cambridge University Press, 2001), p.157-8
  • 100. Implementing Bidirectional Associations 100 is in 0..* 1 Course Classroom class Course { private String _name; private String _number; private Classroom _room; ... public void setClassRoom(Classroom r) { _room = r; r.AddCourse(this); } class Classroom ... { } private String _roomNum; private Collection _courses; ... public AddCourse(Course c) { _courses.add(c); } ... }
  • 101. Bidirectional associations 101  In a bidirectional association, both objects in the relationship are linked to each other.  Inprevious example, both course and classroom had association to the other.
  • 102. Bidirectional associations 102  Bidirectional associations are more difficult to implement (since you need to keep them synchronized without circularity). class Course { private Classroom _room; ... public void setClassRoom(Classroom r) { _room = r; class Classroom r.AddCourse(this); { } private String _roomNum; ... private Collection _courses; } ... public AddCourse(Course c) { Example of circular _courses.add(c); association c.setClassRoom(this); } ... }
  • 103. Unidirectional associations 103  Unidirectional associations are usually preferable.  They contain fewer dependencies between classes and are thus easier to implement and maintain.
  • 104. Unidirectional associations 104  In UML, this is referred to as the navigability of the relationship is in 1 Course Classroom class Course { private Classroom _room; ... public void setClassRoom(Classroom r) { _room = r; } class Classroom ... { } private String _roomNum; ... Example of unidirectional association } NOTE: Classroom "knows" nothing of the Course class
  • 105. Navigability 105  Navigability refers to ability to traverse from object of one class to an object of another class. Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 154-5.
  • 106. Navigability 106  Means messages can only be sent in the direction of the arrow. Thus, a Product not navigable object does not 1 * contain an Order link, Order Product but an Order object does contain a collection of Product navigable links. 1 * If no arrows, then Order Product the relationship is bidirectional. Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 154-5.
  • 107. Aggregation versus Association 107  An aggregation is a complex object composed of other objects  An association is used when one object wants another object to perform a Class Class service for it.  Associations are typically an interaction Student Student described by a verb.  Nonetheless, the dividing lines between these two relationships is not always clear. Source: Matt Weisfeld, The Object-Oriented Thought Process (Sams, 2000), p. 180
  • 108. Dependency 108  A dependency is a relationship between two elements where a change in one, affects the other.  Also referred to as the "uses" relationship  Typically used to indicate that one class uses another, but the usage is not really an association.  However, other relationships also imply a dependency relationship as well. Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 162-3.
  • 109. Dependency 109  We generally try to reduce the dependencies between classes  One can almost never show all the dependencies in a class diagram.  Instead,if the dependency is "interesting" or "relevant", then show it.
  • 110. Dependency 110  Dependencies generated (in class diagrams) by:  An operation of class A needs a parameter of class B  An operation of class A returns a value of class B  An operation of class A uses an object of class B somewhere in its implementation, but not as an attribute.A B +someMethod(in value : B) +otherMethod() : B +doSomething() void doSomething() { ... B myB = new B(); // use myB in some way ... }
  • 111. Dependency Example 111 How? Where? fillWithGasoline($20) Car GasStation +getGas(money) There are several different ways that this dependency/uses relationship could be implemented Source: Arthur Riel, Object-Orientec Deisgn Heuristics (Addison-Wesley, 1996).
  • 112. Dependency Example 112 fillWithGasoline($20, aStation) Car getGas($20) aStation: GasStation 1. Pass gas station object as parameter in original message fillWithGasoline($20) Car Car getGas($20) Car GlobalStation: GasStation Car 2. All Car objects use a global gas station whose name we know
  • 113. Dependency Example 113 GasStation gs = new GasStation(); gs.getGas(money); fillWithGasoline($20) Car 3. Car builds a Gas Station for the fill up
  • 114. Relationship Exercise 114  Describe the relationships (association, aggregation, inheritance) between the following objects via a diagram (don’t worry about adornments). Keyboard Mouse Computer RAM Hard Drive CPU Printer Scanner Floppy Drive Disk Storage Monitor Motherboard Chipset CD Drive
  • 115. Relationship Exercise 115 Disk Storage Chipset RAM Floppy Disk CD Drive Hard Drive Motherboard CPU Computer Keyboard Mouse Printer Monitor Scanner