* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Object-Oriented Programming in Java Topic : Objects and Classes
Falcon (programming language) wikipedia , lookup
Name mangling wikipedia , lookup
Object-relational impedance mismatch wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Design Patterns wikipedia , lookup
C Sharp syntax wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming in Java Topic : Objects and Classes (cont) Object–Oriented Design Maj Joel Young [email protected] 24-May-17 Maj Joel Young Object-Oriented Programming Design 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 object’s attributes is discouraged – (and in fact it is not allowed in above case due to private attribute) 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 2 Object-Oriented Programming Design • • • • • 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; } • Cannot be invoked on existing objects 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 3 Object-Oriented Programming Design 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; } 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 4 Object-Oriented Programming Design Java Example class Person { // Attributes int m_age; double m_gpa; String m_name; static public void main(String args[]) { // Create a Person instance Person p1 = new Person("Pyle",27,1.9); Person p2; // 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); } 24-May-17 // 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 Air Force Institute of Technology Electrical and Computer Engineering 5 Object-Oriented Programming Design • 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. 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 6 Object-Oriented Programming Design 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 <CLASSPATH>\java\util\<vector package files> 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 7 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming in Java Topic : Object–Oriented Design Maj Joel Young [email protected] 24-May-17 Maj Joel Young Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 9 Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 10 Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 11 Object-Oriented Programming Design Object-Oriented vs. Traditional Design Traditional Object-Oriented • 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 24-May-17 • 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 Air Force Institute of Technology Electrical and Computer Engineering 12 Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 13 Object-Oriented Programming Design Design Hints • Don't use too many basic types in a class – Group related types into a separate class and use that class instead – Good – Bad class { – – – – – – – } • • • • 24-May-17 Employee private private private private private private private String _lname; String _fname; char _initial; String _street; String _city; String _state; long _zip; class Employee { private Name _name; private Address _address; private Date _hiredate; } 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 Air Force Institute of Technology Electrical and Computer Engineering 14 Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 15 Object-Oriented Programming Design 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 24-May-17 Air Force Institute of Technology Electrical and Computer Engineering 16