• Review of Inheritance
Pertemuan 2
•Read and understand a pre-written Java program consisting of classes and interacting objects
• Apply the concept of inheritance in the solutions of problems
• Test classes in isolation
• Describe when it is more appropriate to use an ArrayList than an Array 3
Project Inherentance
Pertemuan 3 Penerapan Inherentence didalam Class Diagram
Contoh Studi Kasus :
Soal1
-------Hitung Gaji di Sebuah Universitas------
•
Terdapat dua golongan pegawai di universitas, yaitu Dosen dan Staf biasa. Semua pegawai mendapatkan gaji awal yang sama, yaitu 1.500.000
•
Gaji tambahan dosen dihitung dari jumlah sks yang diampu
•
Gaji tambahan staf dihitung dari jumlah kehadiran per bulan
1. Buatlah program untuk mencetak semua gaji pegawai
2. Buatlah Class Digram dari program tersebut
//CLASS Ke-1
package penggajian;
/**
*
* @author AryaDharmaadi
*/
public class Pegawai {
private String nip;
private String nama;
private String alamat;
public Pegawai(){
}
public Pegawai(String nip, String nama, String alamat) {
this.nip = nip;
this.nama = nama;
this.alamat = alamat;
}
public void setNama(String nama){
this.nama = nama;
}
public String getNama(){
return this.nama;
}
public int getGaji(){
return 1500000;
}
}
//CLASS Ke-2
package penggajian;
/**
*
* @author AryaDharmaadi
*/
public class Staf extends Pegawai{
private int jumlah_kehadiran;
private final int TARIF_HARIAN = 50000;
public Staf(){
}
public Staf(String nip, String nama, String alamat) {
super(nip, nama, alamat);
}
public void setKehadiran(int jumlah_kehadiran){
this.jumlah_kehadiran = jumlah_kehadiran;
}
@Override
public int getGaji(){
int total_gaji = jumlah_kehadiran*TARIF_HARIAN;
return total_gaji+super.getGaji();
}
}
//CLASS Ke-3
package penggajian;
/**
*
public class Dosen extends Pegawai{
private int jumlahSKS;
private final int TARIF_SKS = 120000;
public Dosen(){
}
public Dosen(String nip, String nama, String alamat) {
super(nip, nama, alamat);
}
public void setSKS(int SKS){
this.jumlahSKS = SKS;
}
@Override
public int getGaji(){
int total_gaji = jumlahSKS*TARIF_SKS;
return total_gaji+super.getGaji();
}
}
//CLASS Ke-4
package penggajian;
/**
*
* @author AryaDharmaadi
*/
public class DaftarGaji {
private Pegawai[] listPegawai;
private int jumlahPegawaiSekarang = 0;
public DaftarGaji(int jumlah_pegawai){
listPegawai = new Pegawai[jumlah_pegawai];
}
public void addPegawai(Pegawai p){
listPegawai[jumlahPegawaiSekarang] = p;
jumlahPegawaiSekarang++;
}
public void printSemuaGaji(){
for (int i=0;i<jumlahPegawaiSekarang;i++){
System.out.print(listPegawai[i].getNama()+" mendapatkan gaji ");
System.out.println(listPegawai[i].getGaji());
}
}
}
//CLASS Ke-5
package penggajian;
/**
*
* @author AryaDharmaadi
*/
public class ProgramUtama {
public static void main(String[] args) {
Staf s1 = new Staf();
s1.setNama("Putu");
s1.setKehadiran(20);
Dosen d1 = new Dosen();
d1.setNama("Dharmadi");
d1.setSKS(12);
Pegawai p1 = new Pegawai();
p1.setNama("Kadek");
DaftarGaji daftar_gaji = new DaftarGaji(3);
daftar_gaji.addPegawai(s1);
daftar_gaji.addPegawai(d1);
daftar_gaji.addPegawai(p1);
daftar_gaji.printSemuaGaji();
}
}
// Sumber https://aryadharmaadi.com/blog/2016/03/30/latihan-soal-penggunaan-pewarisan/
CLASS DIAGRAM
......
Soal 2.
Buatlah Class Diagram dari Program Data Hasil penjuakan Mobil Sport.
Diketahui:
1. Disebuah showroom menjual mobil berjenis sport
2. Untuk mengetahui Data hasil penjualan pada showroom tersebut, semua identitas customer
dan spesifikasi mobil yang dibeli oleh customer
Jawaban :
Overview
This lesson covers the following topics:
• Use Abstract Classes
• Use the instanceof operator to compare object types
• Use virtual method invocation
• Use upward and downward casts
Download Soal Praktikum Abstract Class
Pertemuan 5 Generic Class pada JAVA (Materi daro Oracle)
Tugas Generic
Percobaan 1 (Membuat
class NonGeneric, membuatobjekdanmengambilnilaidari class NonGeneric)
NonGen.java
package
generic;
public class
NonGen {
Object ob;
NonGen(Object o)
{
this.ob = o;
}
Object getOb() {
return ob;
}
void showType(){
System.out.println("Type
of ob is = "+ob.getClass().getName());
}
}
|
NonGenDemo.java
package
generic;
public class
NonGenDemo {
public static void main(String[] args)
{
NonGenintegerObject;
integerObject
= new NonGen(88);
integerObject.showType();
int v =
(Integer) integerObject.getOb();
System.out.println("value
: "+v);
NonGenstrOb =
new NonGen("Non-Generics Test");
strOb.showType();
String str = (String)
strOb.getOb();
System.out.println("value
: "+str);
integerObject
= strOb;
v = (Integer) integerObject.getOb();
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan 2 (Membuat
class NonGeneric, membuatobjekdanmengambilnilaidari class NonGeneric)
a.
Source
Code
Gen.java
package
generic;
public class
Gen<T> {
T ob;
Gen(T o){
ob = o;
}
T getOb() {
return ob;
}
void showType(){
System.out.println("Type
of T is = "+ob.getClass().getName());
}
}
|
GenDemo.java
package
generic;
public class
GenDemo {
public static void main(String[] args)
{
Gen<Integer>iOb;
iOb = new
Gen<Integer>(88);
iOb.showType();
int v =
iOb.getOb();
System.out.println("value
: "+v);
System.out.println();
Gen<String>strOb = new
Gen<String>("Generic Test");
strOb.showType();
String str = strOb.getOb();
System.out.println("value
: "+str);
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan 3 (Class
Generic denganDua Type Parameter)
a.
Source
Code
TwoGen.java
package
generic;
public class
TwoGen<T, V>{
T ob1;
V ob2;
TwoGen(T ob1,
V ob2) {
this.ob1 = ob1;
this.ob2 = ob2;
}
void showType(){
System.out.println("Type
of T is "+ob1.getClass().getName());
System.out.println("Type
of V is "+ob2.getClass().getName());
}
T getOb1() {
return ob1;
}
V getOb2() {
return ob2;
}
}
|
TwoGenDemo.java
package generic;
public class TwoGenDemo {
public static void main(String[] args) {
TwoGen<Integer, String>tgObj = new
TwoGen<Integer, String>(88,
"Generic");
tgObj.showType();
int v = tgObj.getOb1();
System.out.println("value : "+v);
String str = tgObj.getOb2();
System.out.println("value :
"+str);
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan 4 (Generic
pada Method)
a.
Source
Code
GenericMethodTest.java
package
generic;
public class
GenericMethodTest {
public static <E> void
printArray(E[] inputArray){
for(E element
: inputArray){
System.out.printf("%s",element);
}
System.out.println("");
}
public static void main(String[] args)
{
Integer[]
intArray = {1,2,3,4,5};
Double[]
doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5};
Character[]
charArray = {'J', 'A', 'v', 'A'};
printArray(intArray);
printArray(doubleArray);
printArray(charArray);
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan 5 (Generic
Pada List)
a.
Source
Code
ArrayListGenericDemo.java
package
generic;
import
java.util.*;
public class
ArrayListGenericDemo {
public static void main(String[] args)
{
ArrayList<String>
data = new ArrayList<String>();
data.add("hello");
data.add("Goodbye");
Iterator<String> it =
data.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan 6(Generic
pada Map)
a.
Source
Code
GenericMap.java
package
generic;
import
java.util.*;
public class GenericMap
{
public static void main(String[] args)
{
HashMap<String,
Integer>hm = new HashMap<String, Integer>();
hm.put("aple",
20);
hm.put("anggur",
13);
hm.put("jeruk",
5);
System.out.println(hm);
}
}
|
b.
Hasil
Output
c.
Analisa
Program
Percobaan7(Generic
pada Map)
a.
Source
Code
GenericMap.java
package
generic;
public class
GenSubtypingDemo {
public static void main(String[] args)
{
Gen<String> gen1 = new
Gen("abc");
Gen<Object> gen2 = new
Gen("abc");
gen2 =
(Gen<Object>)(Object)gen1;
}
}
|
b.
Hasil
Output