Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ini adalah postingan yang diterjemahkan oleh AI.

제이온

[Objek] Bab 1. Objek, Desain

  • Bahasa penulisan: Bahasa Korea
  • Negara referensi: Semua negara country-flag

Pilih Bahasa

  • Bahasa Indonesia
  • English
  • 汉语
  • Español
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Teks yang dirangkum oleh AI durumis

  • Dalam pengembangan perangkat lunak, praktik lebih penting daripada teori, dan pentingnya desain berorientasi objek telah dilihat melalui program sederhana.
  • Prinsip desain berorientasi objek diterapkan untuk meningkatkan kode untuk kemudahan perubahan dan komunikasi, khususnya menekankan otonomi objek untuk mengurangi kopling dan meningkatkan kohesi.
  • Desain berorientasi objek adalah cara membangun sistem melalui kolaborasi antar objek, di mana objek bertanggung jawab atas datanya sendiri, dan manajemen dependensi yang tepat penting untuk menulis kode yang dapat diubah.

Pendahuluan

Robert L. Glass berpendapat bahwa praktik lebih dulu daripada teori. Terutama dalam pengembangan perangkat lunak, praktik mendahului teori, dan pengembang memperoleh manfaat paling banyak saat mereka terlibat dalam kode konkret. Oleh karena itu, kita akan mengesampingkan teori dan konsep untuk sementara waktu dan melihat program sederhana.


Menerapkan Aplikasi Penjualan Tiket

  • Kami berencana untuk menyelenggarakan acara kecil untuk mempromosikan teater kecil.
    • Konten acara: Mengirimkan undangan kepada penonton yang dipilih melalui undian untuk menonton pertunjukan secara gratis.
  • Penonton yang memenangkan undian dan yang tidak harus dipisahkan.
    • Penonton yang memenangkan undian: Menukarkan undangan dengan tiket.
    • Penonton yang tidak memenangkan undian: Membeli tiket dengan uang.



Apa Masalahnya?

Robert Martin menjelaskan tentang tiga fungsi yang harus dimiliki modul perangkat lunak (terlepas dari ukurannya, seperti kelas, paket, atau perpustakaan yang merupakan elemen program apa pun).


  • Bekerja dengan baik saat dijalankan.
  • Ada untuk perubahan.
    • Perubahan harus dilakukan dengan mudah.
  • Berkomunikasi dengan orang yang membaca kode.
    • Pengembang harus dapat dengan mudah membaca dan memahami.


Aplikasi penjualan tiket sebelumnya memenuhi kendala pertama, yaitu bekerja dengan baik saat dijalankan, tetapi tidak memenuhi tujuan kemampuan perubahan dan komunikasi.


Kode yang Tidak Sesuai Ekspektasi

Mari kita lihat mengapa tujuan komunikasi tidak terpenuhi.


  • Apa yang dilakukan metode enter() dari kelas Theater
    • Teater melihat ke dalam tas penonton untuk melihat apakah ada undangan di dalamnya.
    • Jika ada undangan di dalam tas, teater memberi tahu penjual tiket untuk memindahkan tiket yang disimpan di loket tiket ke dalam tas penonton.
    • Jika tidak ada undangan di dalam tas, teater mengeluarkan uang tunai dari tas penonton sejumlah harga tiket, membeli tiket, dan memasukkan tiket ke dalam tas.
  • Dari sudut pandang penonton, mereka harus menyaksikan pihak ketiga, teater, mengutak-atik tas mereka secara sewenang-wenang, mengambil uang, dan memasukkan tiket.
  • Dari sudut pandang penjual tiket, mereka harus menyaksikan pihak ketiga, teater, memanipulasi nilai tiket dan uang tunai di loket tiket tanpa izin.
  • Kode yang dapat dipahami berarti kode yang tidak menyimpang terlalu jauh dari ekspektasi kita, dan teater di atas tidak sesuai dengan ekspektasi kita.
    • Penonton harus mengeluarkan uang tunai dari tas mereka sendiri dan membayar penjual tiket untuk menerima tiket.
    • Penjual tiket harus mengambil tiket langsung dari loket tiket dan menyerahkannya kepada penonton, dan menerima uang dari penonton untuk disimpan di loket tiket.
  • Selain itu, untuk memahami metode enter(), Anda harus mengingat banyak detail.
    • Audience memiliki Bag.
    • Bag berisi uang tunai dan tiket.
    • TiketSellet menjual tiket di TicketOffice, dan TicketOffice menyimpan uang dan tiket.


Kode yang Rentan Terhadap Perubahan

Metode enter() membuat 2 asumsi.

  • Penonton selalu membawa tas untuk menyimpan uang tunai dan undangan.
  • Penjual tiket hanya menjual tiket di loket tiket.


Bagaimana dengan skenario di bawah ini?

  • Penonton mungkin tidak memiliki tas.
  • Penonton dapat menggunakan kartu kredit bukan uang tunai.
  • Penjual tiket dapat menjual tiket di luar loket tiket.


Misalnya, untuk memenuhi persyaratan pertama, kita harus menghapus objek Bag dari Audience dan mengubah metode enter() dari kelas Theater. Ini karena kelas Theater terlalu bergantung pada fakta bahwa penonton memiliki tas dan penjual tiket hanya menjual tiket di loket tiket. Jika salah satu fakta detail ini berubah, kita harus mengubah kelas terkait dan kelas yang bergantung padanya (misalnya, Theater).


Ini adalah masalah yang terkait dengan dependensi antar objek, dan dependensi mengimplikasikan dampak perubahan. Namun, desain berorientasi objek bertujuan untuk membangun komunitas objek yang bekerja sama satu sama lain dengan bergantung satu sama lain, jadi kita harus mempertahankan minimal dependensi yang diperlukanuntuk mengimplementasikan fungsi aplikasi dan menghapus dependensi yang tidak perlu.


Tingkat dependensi yang berlebihan antara objek disebuttingkat kopling yang tinggi, dan semakin tinggi tingkat kopling antara dua objek, semakin tinggi kemungkinan mereka akan berubah bersama. Oleh karena itu, tujuan desain adalah untuk mengurangi tingkat kopling antar objek agar desain lebih mudah diubah.


Meningkatkan Desain

Teater tidak perlu tahu bahwa penonton memiliki tas dan penjual tiket menjual tiket di loket tiket. Yang diinginkan oleh Teater hanyalah penonton memasuki teater. Oleh karena itu, penonton harus dibuat menjadi entitas yang otonom yang dapat menangani uang tunai dan undangan di tas mereka sendiri, dan penjual tiket harus dapat menangani tiket dan biaya penjualan di loket tiket mereka sendiri.


Meningkatkan Otonomi

Objek yang melakukan hanya tugas-tugas yang terkait erat dan mendelegasikan tugas-tugas yang tidak terkait ke objek lain disebut memiliki kohesi yang tinggi. Dengan membuat objek yang otonom yang menangani data mereka sendiri, kita dapat mengurangi kopling dan meningkatkan kohesi.


Berorientasi Prosedur dan Berorientasi Objek

  • Berorientasi Prosedur
    • Metode enter() di Theater adalah proses, dan Audience, TicketSeller, Bag, TicketOffice adalah data.
    • Pemrograman berorientasi prosedur adalah pendekatan untuk menempatkan proses dan data dalam modul yang terpisah.
    • Ada banyak kode yang bertentangan dengan intuisi kita. (misalnya, penonton mengelola uang dan undangan mereka sendiri).
    • Sulit untuk mempersempit dampak perubahan data.
    • Tanggung jawab dikelola secara terpusat. (Teater mengelola semuanya)
  • Berorientasi Objek
    • Pemrograman berorientasi objek adalah pendekatan untuk menempatkan proses dan data di dalam modul yang sama.
    • Kita dapat menulis kode yang sesuai dengan intuisi kita.
    • Dampak perubahan data dapat dipersempit secara efektif melalui enkapsulasi.
    • Setiap objek bertanggung jawab atas dirinya sendiri.


Masih Bisa Ditingkatkan

  • Kelas Bag di kelas Audience masih merupakan entitas pasif yang ditarik oleh kelas Audience, jadi kita harus membuat kelas Bag menjadi objek yang otonom.
  • TicketOffice di kelas TicketSeller juga dikelola secara sewenang-wenang oleh TicketSeller. Kita harus membuat TicketOffice menjadi objek yang otonom.
    • Namun, setelah perubahan, TicketOffice memiliki ketergantungan tambahan pada Audience.
    • Seperti ini, desain harus mempertimbangkan trade-off. Dalam kasus ini, kita dapat menyetujui untuk membuat TicketOffice menjadi objek pasif sampai batas tertentu untuk mengurangi ketergantungan pada Audience.



Ya, Itu Bohong!

  • Meskipun dalam kehidupan nyata mereka adalah entitas pasif, dalam dunia berorientasi objek, semuanya menjadi entitas aktif dan otonom.
  • Lebih baik menggunakan personifikasi untuk menganggap objek pasif sebagai sesuatu yang tertawa, berbicara, dan marah.


Desain Berorientasi Objek

Mengapa Desain Diperlukan?

  • Desain adalah tentang menempatkan kode.
  • Desain yang baik adalah desain yang dapat sepenuhnya menjalankan fungsi yang dibutuhkan hari ini dan menerima perubahan besok dengan lancar.


Desain Berorientasi Objek

  • Kode yang dapat diubah adalah kode yang mudah dipahami.
  • Paradigma berorientasi objek membantu kita menulis kode sesuai dengan cara kita melihat dunia.
  • Objek adalah entitas otonom yang bertanggung jawab atas data mereka sendiri.
  • Desain berorientasi objek yang hebat adalah desain yang mengelola ketergantungan antar objek yang bekerja sama secara tepat.


Sumber

  • Objek
제이온
제이온
제이온
제이온
[Objek] Bab 2. Pemrograman Berorientasi Objek Dokumen ini menjelaskan cara mengimplementasikan sistem pemesanan tiket film menggunakan pemrograman berorientasi objek. Ini mendefinisikan objek seperti film, pemutaran, orang, kebijakan diskon, dan kondisi diskon, dan menyajikan cara menghitung biaya di

28 April 2024

[Efektif Java] Item 6. Hindari Pembuatan Objek yang Tidak Diperlukan Panduan tentang cara mengurangi pembuatan objek yang tidak diperlukan di Java. String, Boolean, dan objek tak berubah lainnya lebih baik menggunakan literal, dan ekspresi reguler lebih baik menggunakan instance Pattern yang di-cache. Selain itu, autoboxin

28 April 2024

[Efektif Java] Item 1. Pertimbangkan Metode Pabrik Statis Sebagai Pengganti Konstruktor Metode pabrik statis adalah cara yang fleksibel dan efisien untuk membuat instance alih-alih konstruktor. Mereka dapat diberi nama, mengembalikan instance yang sesuai dengan kondisi tertentu, dan meningkatkan kinerja melalui caching. Tidak seperti pola si

27 April 2024

[Non-Major, Survive as a Developer] 14. Ringkasan Konten Wawancara Teknis yang Sering Ditanyakan untuk Pengembang Pemula Panduan persiapan wawancara teknis untuk pengembang pemula. Area memori utama, struktur data, RDBMS dan NoSQL, berorientasi prosedur dan berorientasi objek, overriding dan overloading, algoritma penggantian halaman, proses dan thread, OSI 7 layer, TCP dan
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 April 2024

Fenomena Manusia, Menjadi Tolak Ukur Keputusan Bisnis -1 Ketika perusahaan memutuskan untuk berinvestasi untuk pertumbuhan baru, mereka dapat membuat pilihan yang salah karena lima bias manusia, yaitu bias status quo, efek bandwagon, bias konfirmasi, efek jangkar, dan bias kepercayaan. Hal ini dapat menyebabkan
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

7 Mei 2024

Pemikiran Prinsip Pertama, Meragukan dari Dasar Pelajari cara mengidentifikasi inti masalah dan menemukan solusi inovatif melalui pendekatan pemikiran Prinsip Pertama Elon Musk. Dari analisis harga baterai hingga layanan pengiriman paket bundel DuaIt, lihat bagaimana pendekatan pemikiran Prinsip Pertam
울림
울림
울림
울림

18 Maret 2024

Pemodelan Data Logis Proyek Kanbanboard 2 Artikel ini menjelaskan langkah demi langkah bagaimana melakukan pemodelan data logis berdasarkan ERD pemodelan data konseptual, serta memberikan solusi untuk mengatasi kesulitan yang dihadapi selama proses normalisasi. Khususnya, artikel ini akan membaha
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

9 April 2024

Mengharapkan Pertumbuhan Tahap Berikutnya dari Ekosistem Startup Korea 'Strategi Penggalangan Dana Startup' membahas secara rinci informasi yang dibutuhkan dalam proses penggalangan dana, memberikan saran praktis seperti penulisan bahan IR, penandatanganan kontrak, strategi negosiasi. Terutama, buku ini berisi informasi yan
So Yeon Kim
So Yeon Kim
So Yeon Kim
So Yeon Kim

25 Maret 2024

3 Hal yang Ingin Saya Katakan kepada Investor Perorangan yang Baru Memulai Saham Ini adalah saran tentang strategi investasi nilai dan sikap positif untuk investor perorangan yang baru memulai investasi saham. Investasi nilai adalah strategi untuk membeli saham yang kemungkinan besar akan salah dalam jangka pendek dan menunggu sampai
고집스런가치투자
고집스런가치투자
고집스런가치투자
고집스런가치투자

3 April 2024