0% found this document useful (0 votes)
42 views9 pages

PL 05 OOP Composition1

This document discusses object-oriented programming concepts, specifically composition. It provides examples of a Date class that validates month and day values, and an Employee class that contains references to Date objects for an employee's birthdate and hire date. When an Employee object is created, it initializes the name and calls the Date constructor for the birthdate and hiredate, demonstrating composition by containing objects of other classes as members.

Uploaded by

Zahratul Fitri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views9 pages

PL 05 OOP Composition1

This document discusses object-oriented programming concepts, specifically composition. It provides examples of a Date class that validates month and day values, and an Employee class that contains references to Date objects for an employee's birthdate and hire date. When an Employee object is created, it initializes the name and calls the Date constructor for the birthdate and hiredate, demonstrating composition by containing objects of other classes as members.

Uploaded by

Zahratul Fitri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

PEMROGRAMAN LANJUT

Teknik Informatika PTIIK UB


Semester Genap 2015/2016

KONSEP OOP:
KOMPOSISI

Dr. Eng. Herman Tolle


Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya
Composition
Composition
A class can have references to objects of other
classes as members
Sometimes referred to as a has-a relationship
One form of software reuse is
composition, in which a class has as
members references to objects of other
classes.

2
Komposisi
Komposisi
Sebuah kelas dapat memiliki member yang
merupakan referensi objek dari kelas yang
lain.
Terkoneksi dalam hubungan has-a
Salah satu bentuk dari software reuse
adalah composition, dimana sebuah kelas
memiliki member yang berupa objek dari
kelas yang lain.
4

1 // Fig. 8.7: Date.java


Outline
2 // Date class declaration.
3
4 public class Date
5 {
6 private int month; // 1-12
7 private int day; // 1-31 based on month
8 private int year; // any year
9
10 // constructor: call checkMonth to confirm proper value for month;
11 // call checkDay to confirm proper value for day
12 public Date( int theMonth, int theDay, int theYear )
13 {
14 month = checkMonth( theMonth ); // validate month
15 year = theYear; // could validate year
16 day = checkDay( theDay ); // validate day
17
18 System.out.printf(
19 "Date object constructor for date %s\n", this );
20 } // end Date constructor Date.java
21
(1 of 3)
5
Outline
22 // utility method to confirm proper month value
Validates month
23 private int checkMonth( int testMonth )
value
24 {
25 if ( testMonth > 0 && testMonth <= 12 ) // validate month
26 return testMonth;
27 else // month is invalid
28 {
29 System.out.printf(
30 "Invalid month (%d) set to 1.", testMonth );
31 return 1; // maintain object in consistent state
32 } // end else
33 } // end method checkMonth
34
35 // utility method to confirm proper day value based on month and year
36 private int checkDay( int testDay )
Validates day
37 {
value
38 int daysPerMonth[] =
39 { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
40
Date.java
(2 of 3)
41 // check if day in range for month 6
42
43
if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
return testDay;
Outline
44
45 // check for leap year
46 if ( month == 2 && testDay == 29 && ( year % 400 == 0 ||
47 ( year % 4 == 0 && year % 100 != 0 ) ) )
Check if the day
48 return testDay; is February 29
49 on a leap year
50 System.out.printf( "Invalid day (%d) set to 1.", testDay );
51 return 1; // maintain object in consistent state
52 } // end method checkDay
53
54 // return a String of the form month/day/year
55 public String toString()
56 {
57 return String.format( "%d/%d/%d", month, day, year );
58 } // end method toString
59 } // end class Date

Date.java
(3 of 3)
1 // Fig. 8.8: Employee.java 7
2
3
// Employee class with references to other objects.
Outline
4 public class Employee
5 {
6 private String firstName; Employee contains Employee.java
7 private String lastName;
references to two Date
8 private Date birthDate;
9 private Date hireDate; objects
10
11 // constructor to initialize name, birth date and hire date
12 public Employee( String first, String last, Date dateOfBirth,
13 Date dateOfHire )
14 {
15 firstName = first;
16 lastName = last;
17 birthDate = dateOfBirth;
18 hireDate = dateOfHire;
19 } // end Employee constructor
20
21 // convert Employee to String format
22 public String toString()
23 {
24 return String.format( "%s, %s Hired: %s Birthday: %s",
25 lastName, firstName, hireDate, birthDate );
26 } // end method toString
Implicit calls to hireDate and
27 } // end class Employee birthDates toString
methods
1 // Fig. 8.9: EmployeeTest.java 8
2
3
// Composition demonstration.
Outline
4 public class EmployeeTest
5 {
6 public static void main( String args[] ) EmployeeTest.
7 {
Create an Employee java
8 Date birth = new Date( 7, 24, 1949 );
9 Date hire = new Date( 3, 12, 1988 ); object
10 Employee employee = new Employee( "Bob", "Blue", birth, hire );
11
12 System.out.println( employee );
13 } // end main Display the Employee
14 } // end class EmployeeTest object
Date object constructor for date 7/24/1949
Date object constructor for date 3/12/1988
Blue, Bob Hired: 3/12/1988 Birthday: 7/24/1949
Acknowledgements
Deitel, Java How to Program

You might also like