Air Force Institute of Technology - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

Air Force Institute of Technology

Description:

Object-Oriented Programming in Java Topic : Objects and Classes (cont) Object Oriented Design Maj Joel Young Joel.Young_at_afit.edu Maj Joel Young – PowerPoint PPT presentation

Number of Views:19
Avg rating:3.0/5.0
Slides: 17
Provided by: USAF163
Learn more at: https://faculty.nps.edu
Category:

less

Transcript and Presenter's Notes

Title: Air Force Institute of Technology


1
Object-Oriented Programming in JavaTopic
Objects and Classes (cont)ObjectOriented Design
  • Maj Joel Young
  • Joel.Young_at_afit.edu

Maj Joel Young
2
Using Class Instances
  • Accessing an instance method
  • newGuy.raiseSalary( 10.0 )
  • Accessing an instance attribute
  • double hisSalary newGuy._salary
  • newSalary this._salary ( 1 percent/100)
  • //this refers to current instance
  • Note direct access to other objects attributes
    is discouraged
  • (and in fact it is not allowed in above case due
    to private attribute)

3
Constructors
  • Automatically called when object is created
  • Same name as class -- e.g. Date()
  • No return value
  • May be more than one constructor per class
  • Default constructor with no arguments should be
    specified
  • initialize to reasonable default value
  • public Date()
  • _day 1
  • _month 1
  • _year 1
  • Constructor with arguments -- initialize to user
    specified values
  • public Date( int d, int m, int y)
  • _day d
  • _month m
  • _year y

4
Constructors
  • A quick quiz on constructors can you spot the
    error?
  • class Employee
  • public Employee( String n, double s )
  • String _name n
  • double _salary s
  • private String _name
  • private double _salary

5
Java Example
  • class Person
  • // Attributes
  • int m_age
  • double m_gpa
  • String m_name
  • // Operations
  • public Person(String name, int age, double
    gpa)
  • m_age age
  • m_name name
  • m_gpa gpa
  • private void printName()
  • System.out.print(m_name)
  • static public void main(String args)
  • // Create a Person instance
  • Person p1 new Person("Pyle",27,1.9)
  • Person p2
  • // Print the name of
  • // the person
  • System.out.print("Name ")
  • p1.printName()
  • p2 p1
  • // Print the same name again
  • System.out.print(" Name ")
  • p2.printName()
  • // End class Person

6
Class Attributes/Methods
  • Class methods/attributes
  • Use static keyword in front of declaration
  • Class MyMath
  • static void add( int val1, int val2 )
  • May be accessed by using ClassName.method() or
    ClassName.attribute notation
  • MyMath.add( 1, 3 )
  • An instance of the class is not required for
    access
  • Class-wide Attributes
  • An attribute shared by all instances of a class
  • If one instance changes it all others see the
    change
  • Analog Global Variable use SPARINGLY
  • Class-wide Operation
  • A meta operation operates on the class, not
    instances of the class
  • Typical application
  • Creating new class members, assigning class ID
    numbers, etc.

7
Packages
  • Java code is distributed in separate packages
    (you can also create your own packages)
  • To access code in a package
  • refer to class by full name
  • java.util.Vector v new java.util.Vector()
  • or import class into your program
  • import java.util.Vector
  • Vector v new Vector()
  • or import entire package
  • import java.util.
  • Package paths map to directory structure
  • java.util.Vector ?
  • ltCLASSPATHgt\java\util\ltvector package filesgt

8
Object-Oriented Programming in JavaTopic
ObjectOriented Design
  • Maj Joel Young
  • Joel.Young_at_afit.edu

Maj Joel Young
9
Development Process
  • Analysis
  • Transform vague understanding of a problem into a
    precise description of the tasks to be solved
  • Concerned with description of what must be done,
    not how it should be done
  • Design
  • Structure programming tasks into classes and
    packages (logically grouped clusters of objects)
  • Specify operations and attributes of each class
  • Specify relationships with other classes in the
    system
  • Implementation
  • Classes and operations are coded, tested, and
    integrated
  • Object-orientation encourages evolutionary
    development since behavior and state is
    encapsulated into objects with predefined
    interfaces thus objects or packages can be
    incrementally added and tested more easily

10
Object-Oriented Design
  • Goal decompose a programming task into data
    types or class and define the functionality of
    these classes
  • Sub-goals
  • Identify classes
  • Identify functionality of classes
  • Identify relationships among classes
  • A good design greatly reduces time required for
    implementation and testing

11
Object-Oriented Design
  • Finding classes
  • Look for nouns in problem analysis
  • Many are good choices for classes
  • Other classes may be necessary
  • Finding operations
  • Look for verbs in problem analysis
  • Each operation must have exactly one class
    responsible for carrying it out
  • Finding class relationships
  • Association ? uses a class uses another class if
    manipulates objects of that class in any way
    should be minimized
  • Aggregation ? has-a, contains
  • Inheritance ? is-a, specialization useful in
    select places

12
Object-Oriented vs. Traditional Design
  • Traditional
  • Decomposition into sub-tasks
  • Often results in numerous procedures or functions
  • Difficult to manage and understand
  • Task modules can simulate objects by organizing
    related tasks and attributes
  • Only one instance (e.g. queue)
  • Encapsulation achieved with opaque types (e.g.
    Unix file interface)
  • No inheritance
  • Object-Oriented
  • Decomposition into objects with associated tasks
  • Convenient clustering
  • Data encapsulation helps debugging
  • Multiple instances with similar behavior
  • Inheritance captures commonalities among related
    classes of objects

13
Design Hints
  • Always keep data private
  • If user of the class has a need to both read and
    change a field (attribute), the following 3 items
    must be implemented in the class
  • A private data field
  • A public field accessor method
  • A public field mutator method
  • Benefits
  • Internal implementation can be changed without
    affecting any code outside of the class
  • Mutator methods can perform error-checking to
    ensure field is set properly
  • Accessors to fields with mutable objects
  • Should return clone of object so that calling
    object can not modify the field object contained
    in the class instance
  • Always initialize data
  • Avoids unexpected results
  • Simplifies debugging

14
Design Hints
  • Don't use too many basic types in a class
  • Group related types into a separate class and use
    that class instead
  • Bad
  • class Employee
  • private String _lname
  • private String _fname
  • private char _initial
  • private String _street
  • private String _city
  • private String _state
  • private long _zip
  • Not all fields need individual field accessors
    and mutators
  • Use a standard format for class definitions
  • Break up classes with too many responsibilities
  • Make the names of your classes and methods
    reflect their responsibilities
  • Good
  • class Employee
  • private Name _name
  • private Address _address
  • private Date _hiredate

15
Homework Discussion
  • Compile and run the Person example code
  • Write and test a swap method
  • Create a simple class with one int data member
  • Write a swap method for that class that swaps
    values
  • static public void swap(mytype a, mytype b)
  • Such that after swap(a,b) is called a looks like
    b looked and b looks like a looked
  • Analyze the requirements for a Calculator program
  • Identify the classes, the operations, and the
    relationships between classes
  • Make stub code for all your classes and
    operations with definitions
  • for the has-a relationships
  • Remember each class goes in a separate file

16
Homework Assignment Due Monday
  • COMACC Calculator Question and Answer Session
  • Analyze the requirements for a Calculator program
  • Provide a narrative discussion of the
    requirements and behavior COMACC expects from the
    Calculator
  • Prepare clarification questions. Proposing
    alternatives is a strong plus
  • Discuss what is feasible in the next 3 weeks.
    Remember that you will know more in the next few
    weeks
  • Provide me this in hard copy with your email
    address on it
  • Be prepared to
  • Identify the classes, the operations, and the
    relationships between classes
  • Make stub code for all your classes and
    operations with definitions for the has-a
    relationships
Write a Comment
User Comments (0)
About PowerShow.com