Subbab 3 / 9

Inheritance dan Class Diagram

1. Konsep Inheritance (Pewarisan)

Inheritance (pewarisan) adalah mekanisme OOP yang memungkinkan sebuah Child Class mewarisi atribut dan method dari Parent Class. Child Class juga dapat menambahkan fitur baru atau mengubah perilaku yang diwarisinya.

visualisasi inheritance pada pegawai restoran
visualisasi inheritance pada pegawai restoran

Terminologi Utama:

  • Parent Class (Base Class): class yang menyediakan atribut dan method umum untuk diwariskan.
  • Child Class (Derived Class): class yang mewarisi atribut dan method dari Parent Class serta dapat menambahkan fitur yang lebih spesifik.


Mengapa Menggunakan Inheritance?

  1. Reusability: Kita tidak perlu menulis ulang kode yang sama di banyak class.
  2. Lebih terorganisasi: Mempermudah pengelompokan class yang memiliki hubungan "is-a" (contoh: Chef adalah Pegawai Restoran).


2. Implementasi

Di C#, inheritance diterapkan menggunakan tanda titik dua (:) pada deklarasi class. Child Class dapat menggunakan atribut dan method yang diwariskan dari Parent Class, serta menambahkan fitur yang lebih spesifik sesuai kebutuhannya.


Keyword Penting:

base: digunakan dalam Child Class untuk mengakses anggota atau memanggil constructor milik Parent Class. Salah satu penggunaannya adalah meneruskan nilai dari constructor Child ke constructor Parent saat objek dibuat.


csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;

namespace Praktikum3
{
    // Parent Class (Base Class)
    public class PegawaiRestoran
    {
        public string Nama;
        public string IDPegawai;

        // Constructor
        public PegawaiRestoran() { }

        // Constructor dengan parameter
        public PegawaiRestoran(string nama, string idPegawai)
        {
            this.Nama = nama;
            this.IDPegawai = idPegawai;
        }

        public void Bekerja()
        {
            Console.WriteLine($"{Nama} sedang bekerja.");
        }
    }

    // 1. Child Class - Tanpa Constructor
    public class Chef : PegawaiRestoran
    {
        public void Memasak()
        {
            Console.WriteLine($"{Nama} sedang memasak.");
        }
    }

    // 2. Child Class - Dengan Constructor
    public class Kasir : PegawaiRestoran
    {
        // Memanggil constructor Parent menggunakan 'base'
        public Kasir(string nama, string idPegawai) : base(nama, idPegawai)
        {
        }

        public void MemprosesPembayaran()
        {
            Console.WriteLine($"{Nama} sedang memproses pembayaran.");
        }
    }

    // 3. Child Class - Dengan Constructor dan Atribut Tambahan
    public class Pelayan : PegawaiRestoran
    {
        public string AreaTugas;

        // Memanggil constructor Parent dan mengisi atribut Child
        public Pelayan(string nama, string idPegawai, string areaTugas)
            : base(nama, idPegawai)
        {
            this.AreaTugas = areaTugas;
        }

        public void MelayaniPelanggan()
        {
            Console.WriteLine($"{Nama} sedang melayani pelanggan di area {AreaTugas}.");
        }
    }

    class Program
    {
        static void Main()
        {
            // Child Class tanpa constructor
            Chef chef1 = new Chef();
            chef1.Nama = "Budi";
            chef1.IDPegawai = "PG001";

            Console.WriteLine("--- Data Chef ---");
            Console.WriteLine($"Nama: {chef1.Nama}");
            Console.WriteLine($"ID Pegawai: {chef1.IDPegawai}");
            chef1.Bekerja();
            chef1.Memasak();
            Console.WriteLine();

            // Child Class dengan constructor
            Kasir kasir1 = new Kasir("Andi", "PG002");

            Console.WriteLine("--- Data Kasir ---");
            Console.WriteLine($"Nama: {kasir1.Nama}");
            Console.WriteLine($"ID Pegawai: {kasir1.IDPegawai}");
            kasir1.Bekerja();
            kasir1.MemprosesPembayaran();
            Console.WriteLine();

            // Child Class dengan constructor dan atribut tambahan
            Pelayan pelayan1 = new Pelayan("Siti", "PG003", "Lantai 2");

            Console.WriteLine("--- Data Pelayan ---");
            Console.WriteLine($"Nama: {pelayan1.Nama}");
            Console.WriteLine($"ID Pegawai: {pelayan1.IDPegawai}");
            Console.WriteLine($"Area Tugas: {pelayan1.AreaTugas}");
            pelayan1.Bekerja();
            pelayan1.MelayaniPelanggan();
        }
    }
}

3. Class Diagram (UML)

Class Diagram adalah bagian dari Unified Modeling Language (UML) yang menggambarkan struktur sistem dengan menunjukkan kelas, atribut, metode, dan hubungan antar kelas.

  • Aturan pembuatan class diagram


class diagram
class diagram

Penulisan Access Modifier dalam Class Diagram

  1. ) + ==> public
  2. ) - ==> private
  3. ) # ==> protected


Simbol Hubungan Inheritance:

Dalam diagram, pewarisan digambarkan dengan garis lurus dengan ujung panah berbentuk segitiga kosong yang mengarah dari Child Class ke Parent Class.