1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze...
-
Upload
jody-carson -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze...
![Page 1: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/1.jpg)
1
Chapter 9Object-Oriented Software Development
Software Development Process Analyze Relationships Among Objects Class Development Class Design Guidelines Wrapper Classes Generic Sort Class Generic Matrix Class Generic Linked List Class
![Page 2: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/2.jpg)
2
Software Development
Process
Requirement Specification
System Analysis
System Design
Implementation
Testing
Deployment
Maintenance
![Page 3: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/3.jpg)
3
Relationships among Classes
Association
Aggregation
Inheritance
![Page 4: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/4.jpg)
4
Association
Association represents a general
binary relationship that describes an
activity between two classes.
Student FacultyCourse*5..60Take Teach
0..3 1Teacher
![Page 5: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/5.jpg)
5
Association, cont.An association is usually represented
as a data field in the class.
public class Course
{
private Faculty faculty;
/**Constructors*/
/**Methods*/
}
![Page 6: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/6.jpg)
6
Aggregation
Aggregation is a special form of association,
which represents an ownership relationship
between two classes. Aggregation models the
relationship like has-a, part-of, owns, and
employed-by.
Magazine ConsultantPublisher1*
Owned by Employed by**
Expert
![Page 7: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/7.jpg)
7
Inheritance
Inheritance models the is-a relationship
between two classes.
Person
Faculty
Student
![Page 8: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/8.jpg)
8
Inheritancepublic class Student extend Person
{
/**Constructors*/
/**Methods*/
}
public class Faculty extend Person
{
/**Constructors*/
/**Methods*/
}
![Page 9: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/9.jpg)
9
Class Development
1. Identify classes for the system.
2. Describe attributes and methods in each
class.
3. Establish relationships among classes.
4. Create classes.
![Page 10: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/10.jpg)
10
Example 9.1 Borrowing Mortgages
NameName BorrowerBorrowerPersonPersonMortgageMortgage
Name
1 1 Has Live 1 1
Mortgage Borrow
Borrower -mortgage: Mortgage +Borrower() +Borrower(name: Name, address: Address) +getMortgage(): Mortgage +setMortgage(mortgage: Mortgage): void +toString(): String
Address -street: String -city: String -state: String -zip: String +Address() +Address(street: String, city: String, state: String, zip: String) getStreet(): String +getCity(): String +getState(): String +getZip(): String +setStreet(street: String): void +setCity(city: String): void +setState(state: String): void +setZip(zip: String): void +getFullAddress(): String
Defined in Example 6.7
Defined in Example 8.6
Person -name: Name -address: Address +Person() +Person(name: Name, address: Address) +getName(): Name +setName(name: Name): void +getAddress(): Address +setAddress(address: Address): void +toString(): String
AddressAddress
![Page 11: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/11.jpg)
11
Example 9.1 Borrowing Mortgages, cont.
The following is a test program that uses the classes Name, Person, Address, Borrower, and Mortgage.
BorrowMortgageBorrowMortgage RunRun
![Page 12: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/12.jpg)
12
Example 9.2 The Rational Class
RationalRational RunRunTestRationalClassTestRationalClass
1
1 Add, Subtract, Multiply, Divide
Rational -numerator: long -denominator: long +Rational() +Rational(numerator: long, Denomination: long) +getNumerator(): long +getDenominator(): long +add(secondRational: Rational): Rational +multiply(Rational secondRational): Rational +subtract(Rational secondRational): Rational +divide(Rational secondRational): Rational +toString(): String -gcd(n: long, d: long): long
java.lang.Number +byteValue(): byte +shortValue(): short +intValue(): int +longVlaue(): long +floatValue(): float +doubleValue():double
java.lang.Comparable +int compareTo(Object)
![Page 13: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/13.jpg)
13
Class Design Guidelines
Hide private data and private methods.
A property that is shared by all the instances of the class should be declared as a class property.
Provide a public default constructor and override the equals method and the toString method defined in the Object class whenever possible.
![Page 14: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/14.jpg)
14
Class Design Guidelines, cont.
Choose informative names and followconsistent styles.
A class should describe a single entity or a set of similar operations.
Group common data fields and operations shared by other classes.
![Page 15: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/15.jpg)
15
Wrapper Classes
Boolean
Character
Short
ByteObject
-
Double-
Float-
Long-
Integer-
Short-
Byte-
Character-
Boolean-
Number-
Integer Long
Float
Double
![Page 16: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/16.jpg)
16
The Integer Classand The Double Class
Constructors
Class Constants MAX_VALUE, MIN_VALUE
Conversion Methods
![Page 17: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/17.jpg)
17
Example 9.3 Sorting an Array of Objects
Objective: The example presents a generic method for sorting an array of objects. The objects are instances of the Comparable interface and they are compared using the compareTo method.
Generic SortGeneric Sort RunRun
![Page 18: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/18.jpg)
18
Example 9.4Designing Generic Classes
Objective: This example gives a generic class for matrix arithmetic. This class implements matrix addition and multiplication common for all types of matrices.
GenericMatrixGenericMatrix
![Page 19: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/19.jpg)
19
Example 9.4, cont.
GenericMatrix
-matrix: Object[][] #GenericMatrix(matrix: Object[][]) +getMatrix(): Object[][] +setMatrix(matrix: Object[][]): void +addMatrix(secondMatrix: Object[][]): Object[][] +multiplyMatrix(secondMatrix: Object[][]): Object[][] +printResult(m1: GenericMatrix, m2: GenericMatrix, m3: GenericMatrix, op: char): void #createGenericMatrix():GenericMatrix #add(o1: Object, o2: Object): Object #multiply(o1: Object, o2: Object): Object #zero():Object
IntegerMatrix
RationalMatrix
![Page 20: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/20.jpg)
20
Example 9.4, cont.
Objective: This example gives two programs that utilize the GenericMatrix class for integer matrix arithmetic and rational matrix arithmetic.
TestIntegerMatrixTestIntegerMatrix RunRun
TestRationalMatrixTestRationalMatrix RunRunRational MatrixRational Matrix
IntegerMatrixIntegerMatrix
![Page 21: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/21.jpg)
21
Linked ListArrays are useful for storing and managing a set of elements of the same type. However, since the length of an array is fixed once the array is created, you need to know the length of the array before you create it. A linked list can grow or shrink dynamically as needed.
A linked list consists of nodes, as shown in Figure 9.14. Each node contains an element and each node is linked to its next neighbor. Thus, a node can be defined as a class as follows:
![Page 22: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/22.jpg)
22
Linked List Structurepublic class Node{ Object element; Node next; public Node(Object o) { element = o; }}
first element next
element next
element next
last …
node1 node2 node n
![Page 23: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/23.jpg)
23
Create a Linked List with three Nodes
Node n1 = new Node(new String(“Welcome to Java!”));
Node n2 = new Node(new JButton(“OK”));
Node n3 = new Node(new Rational(1, 2));
n1.next = n2;
n2.next = n3;
Node first = n1;
Node last = n3;
![Page 24: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/24.jpg)
24
Generic Linked List
… element next
element next
current
first element next
element next:null
last …
element next
New node inserted here
temp
Add a new node
![Page 25: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/25.jpg)
25
Generic Linked List
Remove a new node
… element next
element next
previous
first element next
element next:null
last …
Node to be deleted
current
After the node isdeleted
![Page 26: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/26.jpg)
26
Example 9.5 Using Linked List
This example creates a linked list using GenericLinkedList. It then uses the add method to add strings to the list and uses the remove method to remove strings from the list.
GenericLinkedListGenericLinkedList
RunRunTestLinkedListTestLinkedList
![Page 27: 1 Chapter 9 Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design.](https://reader036.fdocuments.us/reader036/viewer/2022062519/5697c0031a28abf838cc3e8b/html5/thumbnails/27.jpg)
27
Generic Linked List
GenericLinkedList list = new GenericLinkedList();
list.addLast(new String(“Welcome to Java”));list.addLast(new JButton(“OK”));list.addLast(new Rational(1, 2));