Saya telah melihatnya secara umum diulang pemrograman berorientasi objek didasarkan pada pemodelan dunia nyata tetapi apakah itu?
Tampaknya bagi saya itu tidak benar pada apa pun di luar lapisan bisnis. Kelas GUI saya / kelas akses data tidak memodelkan apa pun di dunia nyata. Bahkan di lapisan bisnis saya, saya punya kelas seperti pengamat, manajer, pabrik, dll. Yang bukan objek dunia nyata. Saya mencoba merancang kelas saya untuk mengambil keuntungan dari hal-hal seperti enkapsulasi tetapi apakah dunia nyata dienkapsulasi?
Sementara beberapa objek yang saya buat memodelkan objek dunia nyata, tidakkah kode pra-OOP melakukan hal yang sama? Saya ragu bahwa OO adalah orang pertama yang memasukkan konsep seperti Pelanggan dalam basis kode mereka. Tapi OO benar-benar tentang bagaimana memodelkan sesuatu, dan metode pemodelan itu tampaknya tidak terinspirasi oleh dunia nyata bagi saya.
Jadi: apakah pemrograman berorientasi objek benar-benar memodelkan dunia nyata?
sumber
modeling the real world
mungkin bukan yang benar-benar membedakan OO. Mungkin. Tapi saya pasti tidak akan percaya bahwa Anda akan gagal melakukan ini di OO juga. Paradigma atau teknik apa yang menurut Anda membuatnya lebih baik daripada OO?Jawaban:
Tidak, tidak sama sekali.
Namun itu adalah metodologi yang memungkinkan untuk membuat abstraksi yang bagus untuk menahan struktur data yang kompleks bersama dengan beberapa metode yang bekerja pada struktur data.
sumber
Model, apa pun jenisnya, tidak memodelkan dunia nyata, tidak sepenuhnya.
Mereka memodelkan bagian yang dipilih , yang relevan dengan aplikasi yang ada.
Apa yang Anda bicarakan (pengamat, manajer, pabrik dll ...) adalah infrastruktur yang ada untuk membantu Anda mendapatkan hak abstraksi dan mendukung fungsi-fungsi yang diperlukan seperti ketekunan.
sumber
Apa yang dimaksud dengan model:
Model adalah representasi yang disederhanakan yang digunakan untuk menjelaskan cara kerja sistem atau peristiwa dunia nyata
Pasti ya
Hampir tidak mungkin untuk memodelkan sistem agar benar-benar cocok dengan dunia nyata.
TIDAK
Setelah mengatakan bahwa Anda dapat memodelkan segalanya bukan berarti Anda harus memodelkan segalanya. Bahkan, esensi pemodelan yang berguna adalah menghadirkan representasi yang disederhanakan. Berapa banyak penyederhanaan yang cukup untuk mengekspresikan kebutuhan bisnis saat ini, dan apa yang perlu dihilangkan, adalah keseimbangan yang baik antara menggunakan teknik dengan sukses vs tersesat dengan itu atau tidak menggunakannya sama sekali.
Tentu saja ada entitas yang tidak benar-benar ada, tetapi hanya melalui pemodelan kita benar-benar dapat dikonsep dengan baik.
sumber
Saya pikir mengajarkan bahwa ada hubungan antara kata benda dan kelas menyebabkan kebiasaan buruk yang mengganggu untuk dikembangkan yang harus dihancurkan kemudian oleh arsitek atau insinyur senior yang tidak sabar.
Apa yang harus diajarkan adalah bahwa kelas memodelkan benda-benda abstrak, seperti otak Anda. Anda memiliki konsep abstrak "mobil" di kepala Anda yang tidak memetakan ke mobil fisik tertentu, itu dapat digunakan kembali, implementasi spesifik mobil dapat mewarisi dari itu. Otak Anda bahkan meta-konsep konsep untuk Anda. Anda memiliki model mental tentang apa itu pikiran, apa konsep itu.
Jika kami mengajarkan orang untuk mengidentifikasi model yang sudah mereka hasilkan di kepala Anda, mereka akan jauh lebih siap untuk membangun perangkat lunak nyata.
sumber
sumber kutipan: Victoria Livschitz, Langkah Selanjutnya dalam Pemrograman
sumber
this.MoveTo(Environment.Find<Bathroom>().OrderBy(b=>b.Distance(this)).First()); this.SitOn(Environment.Find<Toilet>().Where(t=>!t.IsOccupied).OrderBy(t=>t.Distance(this)).First().Component<Seat>()); this.DiscardWaste(HumanWasteType.All);
Ya, OO sering dapat digunakan untuk memodelkan entitas dunia nyata.
Jangan bingung pengembangan berorientasi objek dengan pola desain. Analisis dan desain OO adalah cara untuk mendekati pemrograman kode yang dapat dipelihara. Digabungkan dengan bahasa OO, programmer diberi kekuatan untuk membuat kode yang dapat digunakan kembali melalui pilar OO: enkapsulasi, polimorfisme, dan pewarisan.
Untuk mengenkapsulasi suatu entitas, kita dapat memodelkan entitas tersebut setelah entitas aslinya. Misalnya, jika kita memiliki gitar maka kelas gitar merangkum perilaku dan sifat gitar dunia nyata. Kita dapat lebih jauh mengabstraksi gitar sebagai, katakanlah,
IInventoryItem
untuk mengambil keuntungan dari potensi penggunaan kembali kode melalui polimorfisme dan pewarisan.Di sisi lain, kita mungkin menemukan bahwa pabrik gitar dapat membantu kita dalam memelihara serangkaian jenis gitar yang berbeda. Ini bukan karena OO. Sebaliknya, sebuah pabrik adalah pola desain yang telah teruji oleh waktu sebagai sarana yang terbukti berhasil menciptakan kode yang dapat dikelola untuk tujuan semacam itu. Dengan kata lain, kami para programmer seringkali memecahkan masalah yang sama. Jadi kami datang dengan solusi umum untuk menyelesaikannya (jangan menemukan kembali roda).
Itu tidak berarti OO harus memodelkan dunia nyata, juga tidak selalu merupakan solusi paling optimal untuk melakukannya. Sederhananya, itu sebagai aturan praktis "OO modelling the real world" masuk akal.
sumber
Itu tergantung pada dunia nyata yang kamu bicarakan.
Jorge Luis Borges menulis sebuah cerita "Tlön, Uqbar, Orbis Tertius", di mana salah satu penduduk tampaknya memandang dunia nyata mereka secara sangat berbeda:
Bagi saya, intinya adalah bukan bahwa dunia dapat dipersepsikan berbeda dari yang kita lakukan, yang agak klise, tetapi persepsi tentang struktur realitas itu sendiri tergantung pada bahasa yang kita gunakan, baik itu bahasa alami atau bahasa pemrograman. Tlönese mungkin sangat senang dengan Lisp, dan mungkin melihat Java (AKA The Kingdom Of Nouns ) sebagai sangat tidak wajar, sedangkan kebanyakan programmer terran cenderung lebih menyukai berorientasi objek daripada bahasa fungsional. Saya suka kedua gaya, karena saya pikir ini terutama masalah perspektif. Beberapa masalah paling baik diserang dengan fungsional, beberapa lainnya dengan teknik pemrograman berorientasi objek. Seorang programmer yang baik selalu melihat masalah yang sulit dari sudut yang berbeda, sebelum ia mencoba solusi. Atau, seperti yang dikatakan Alan Kay: Sudut pandang bernilai 80 poin IQ .
Jadi, jawaban saya untuk pertanyaan Anda adalah: Dunia nyata mana yang Anda bicarakan? Dan bagaimana?
sumber
Saya akan mengatakan tidak. OOP mengikat hubungan antara hal-hal (properti / objek) dan apa yang dapat mereka lakukan / dapat dilakukan untuk mereka (metode), sedangkan pemrograman prosedural tidak melakukan ini (selain dari, pada tingkat kecil, ketika menggunakan pengetikan ketat). Sebuah model bukan hanya tentang mendefinisikan bagian-bagian dan proses-proses yang terpisah, tetapi juga menentukan bagaimana mereka cocok bersama, dan OOP sangat pandai dalam hal ini.
sumber
Iya. Penekanan di sini didasarkan pada . OOP tidak membuat model dunia nyata (jika ya, maka secara kebetulan) dan tidak seharusnya demikian. Apa yang dilakukan OOP adalah untuk memungkinkan kita memodelkan masalah pemrograman dengan cara kita memodelkan dunia nyata: sebagai sistem entitas yang didefinisikan melalui abstraksi perilaku mereka.
sumber
Kode OO biasanya tidak memodelkan dunia nyata - setidaknya itu bukan tujuannya, itu hanya memungkinkan Anda untuk berpikir tentang kode Anda dengan cara yang lebih alami, lebih seperti cara Anda berpikir tentang hal-hal di dunia nyata - inilah yang ingin dikatakan oleh kutipan tersebut.
sumber
Itu tidak mencontoh dunia kita, tetapi memodelkan interpretasi manusia atas dunia kita. Manusia secara alami memisahkan benda sebagai benda. OO efektif karena memungkinkan manusia memprogram cara mereka berpikir.
sumber
OOP mungkin bukan model yang sempurna dari dunia nyata dan objek yang terkandung di dalamnya, tetapi ini adalah metodologi yang membantu menangani meningkatnya kompleksitas perangkat lunak kehidupan nyata. Ini juga membantu menulis kode dengan lebih baik, dengan memecahnya menjadi potongan yang terkait secara logis.
Walaupun metode berorientasi prosedur yang lebih lama pasti akan memberikan hasil juga, OOP membantu Anda mencapai sana lebih cepat dan dengan relatif mudah, bahkan ketika berhadapan dengan proyek-proyek besar & kompleks.
Abstraksi dan Enkapsulasi membantu berkonsentrasi pada inti masalah sambil menyembunyikan semua pipa ledeng yang benar-benar membuat hal-hal terjadi. Warisan dan memungkinkan Anda menjalin hubungan yang bermakna dan logis antara berbagai aspek kode Anda. Polimorfisme mempromosikan penggunaan kembali kode dan memungkinkan Anda menangani variasi dengan mudah ( kategori "perilaku yang hampir sama dengan objek yang ada" masalah yang sering terjadi) dan memperluas kode dengan memperluas semantik yang terkait dengan suatu objek.
Saya merasa OOP lebih seperti bantuan terbukti yang memungkinkan Anda menangani semua kompleksitas sistem kehidupan nyata secara efektif. Jadi, walaupun itu mungkin bukan model yang sangat teliti dari dunia nyata, itu cukup dekat dan membantu Anda menyelesaikan pekerjaan, yang IMHO adalah yang paling penting pada akhirnya.
sumber
Tidak. Seperti yang Anda tunjukkan, banyak hal yang "dimodelkan" dalam bahasa OOP adalah konsep abstrak seperti antrian pesan, pengontrol, dan tumpukan.
Bahkan di lapisan bisnis Anda, Anda masih belum memodelkan "dunia nyata". Anggaplah Anda memiliki kelas karyawan. Karyawan juga Orang, yang juga Mamalia, yang juga Binatang, yang juga ... (menguap) Karyawan memiliki warna favorit, dan mereka mengenakan pakaian tertentu dan meyakini hal-hal tertentu. Singkatnya, ada sejumlah besar kompleksitas di dunia nyata yang bahkan tidak kami coba tangkap di sebagian besar program.
Dalam pemodelan, kami hanya fokus pada aspek-aspek model yang bermakna untuk tugas yang ada. Jika kita merancang sistem entri waktu, maka kita mungkin menginginkan semacam kelas Karyawan, tetapi kelas itu tidak membutuhkan properti untuk mengekspresikan warna favorit karyawan.
Oleh karena itu, model tidak boleh berusaha (atau berpura-pura) untuk sepenuhnya mewakili "Dunia Nyata".
Anda benar. Jika Anda melihat program besar yang bukan OOP, mereka sering masih diatur di sekitar struktur data. Struktur data dan semua fungsi yang memanipulasi didefinisikan berdekatan satu sama lain, untuk alasan kejelasan. (Proyek subversi adalah contoh yang bagus untuk ini. Struktur dan fungsi data diawali dengan nama modul sehingga jelas struktur dan fungsi mana yang dimaksudkan untuk digunakan satu sama lain.)
Saya bukan ahli dalam sejarah bahasa pemrograman, tapi saya membayangkan bahwa OOP tumbuh dari pengamatan biasa bahwa kode lebih jelas dan lebih mudah dipahami ketika diatur dengan cara ini, jadi perancang bahasa mulai merancang bahasa di mana jenis organisasi itu berada lebih ketat ditegakkan.
Perbedaan terbesar antara OOP dan non-OOP adalah bahwa OOP mengikat kode ke data. Jadi daripada memanggil kode seperti ini:
kami melakukan ini sebagai gantinya:
Meskipun ini mungkin tampak seperti perbedaan tata bahasa, perbedaannya sebenarnya dalam pola pikir. Kami memberi tahu objek apa yang harus dilakukan, dan biasanya tidak peduli apa keadaan internal atau cara kerja objek tersebut. Saat mendeskripsikan sebuah objek, kita hanya perlu mendeskripsikan antarmuka publiknya agar dapat bekerja dengannya.
sumber
Tidak sepenuhnya.
Nah di dunia nyata, kita menghadapi masalah nyata. Kami ingin menyelesaikan masalah ini menggunakan paradigma yang mereplikasi sistem yang ingin kami bangun yang menjadi modelnya.
Misalnya, jika aplikasi Keranjang Belanja adalah masalah yang ada, kami memiliki entitas yang berbeda suka
Produk yang merupakan istilah abstrak yang dapat memiliki banyak anggota seperti Buku, Gadget, Mobil yang dapat dibagi lagi.
Kriteria Pajak seperti (Pajak Penjualan) akan tergantung pada lokasi mana perangkat lunak diimplementasikan karena dapat berubah berdasarkan kebijakan pemerintah.
Pajak dipertimbangkan berdasarkan apakah produk itu diimpor bersama dengan kriteria pajak.
Pengguna dapat memiliki keranjang belanja yang memiliki daftar produk dll.
Jadi seperti yang Anda lihat, ada masalah nyata yang kami coba selesaikan tetapi dimodulasi dengan paradigma OOP untuk membuatnya sedekat mungkin dengan sistem nyata.
sumber
Saya pikir Anda terlalu banyak membaca apa yang dimaksudkan untuk menjadi pernyataan yang sangat membosankan, historis,. Banyak ide pemrograman OO, kelas, polimorpisme, fungsi virtual, dll. Diperkenalkan dalam bahasa Simula, di tahun 1960-an (http://en.wikipedia.org/wiki/Simula). Seperti namanya, Simula dirancang untuk menjadi bahasa untuk menulis simulasi. Jadi secara historis, ya, ide-ide OO diperkenalkan dalam upaya untuk memodelkan "dunia nyata". Apakah mereka berhasil lebih dari gaya lain adalah masalah perdebatan.
sumber
Perbedaan terbesar antara kode OOP dan kode pra-OOP adalah bahwa model sebelumnya adalah situasi dunia nyata sebagai kelompok entitas yang berbeda berinteraksi satu sama lain, masing-masing dengan "kekuatan" terbatas mengenai apa yang dapat dilakukan, dan juga mampu "bereaksi" terhadap peristiwa eksternal dengan tindakannya sendiri. Yang terakhir memodelkan semuanya sebagai sebagian besar data yang tidak melakukan apa-apa sendiri, sedangkan perhitungannya mewakili "hal-hal yang terjadi" dan dapat mempengaruhi salah satu atau semuanya.
Apakah itu lebih baik memodelkan dunia nyata atau tidak, itu benar-benar tergantung pada segi dunia mana yang Anda modelkan. Sebuah simulasi fisika, misalnya, di mana Anda ingin menggambarkan efek yang, katakanlah, api yang sedang menyala akan ada di objek sekitarnya, akan lebih baik diwakili oleh pendekatan "tradisional", karena baik cahaya maupun panasnya baik-baik saja. proses yang didefinisikan yang mempengaruhi keadaan eksternal dan internal dari objek lain, dan tidak bervariasi sesuai dengan perilaku masing-masing objek tertentu, hanya dipengaruhi oleh sifat-sifatnya.
Di sisi lain, jika Anda memodelkan komponen berbeda yang berinteraksi untuk menghasilkan perilaku yang diinginkan, memperlakukan mereka sebagai agen alih-alih hal-hal pasif dapat membuatnya lebih mudah untuk melakukannya dengan benar tanpa kehilangan apa pun. Jika saya ingin menyalakan TV saya, saya hanya menekan tombol, jika kabel listrik dicabut
TV.turnOn
akan memeriksa untuk saya. Jadi, tidak ada risiko memutar roda gigi dan lupa untuk memutar roda gigi lain yang menyentuhnya, karena roda gigi itu sendiri (jika diprogram dengan benar) akan menjaga interaksi sekunder yang terjadi sebagai konsekuensi dari yang utama.Saya percaya ini lebih berkaitan dengan cara kita memandang dunia daripada bagaimana dunia sebenarnya. Orang dapat berargumen bahwa semuanya hanya sekelompok atom (atau energi, atau gelombang, apa pun), tetapi itu tidak membantu kita menangani tugas mengatasi masalah yang kita hadapi, dengan memahami lingkungan di sekitar kita dan memprediksi peristiwa di masa depan ( atau menggambarkan yang sebelumnya). Jadi kita membuat "model mental" dunia, dan seringkali model mental itu menemukan korespondensi yang lebih baik dengan OO daripada data + memproses satu - yang bisa dibilang memodelkan "lebih baik" bagaimana dunia nyata benar-benar beroperasi.
Menarik juga untuk dicatat bahwa kebanyakan orang menganggap OOP sebagai sinonim dengan "OOP klasik", di mana kami secara taksonomis membuat set dan himpunan bagian dari hal-hal, dan secara jelas menempatkan objek dalam set yang sangat spesifik. Itu sangat berguna untuk membuat tipe baru yang dapat digunakan kembali , tetapi tidak begitu bagus ketika entitas yang Anda modelkan cukup mandiri, dan sementara itu memulai interaksi dengan objek lain, jarang, jika pernah, adalah target interaksi. Atau lebih buruk, ketika ada sedikit (mungkin hanya satu) instance dari entiy itu, atau instans sangat bervariasi dalam komposisi, perilaku atau keduanya.
Namun, ada juga "prototipe OOP", di mana objek dijelaskan dengan memilih yang serupa dan menyebutkan aspek-aspek di mana mereka berbeda. Saya menyarankan esai ini untuk penjelasan yang baik dan tidak terlalu teknis dari proses pemikiran (seluruh pos terlalu besar, bahkan untuk standar Steve Yegge, jadi saya menunjuk ke bagian yang relevan: P). Sekali lagi, ini adalah pasangan yang cocok untuk model mental kita ketika membayangkan contoh yang tidak diketahui dengan membandingkannya dengan yang diketahui, tetapi tidak harus untuk bagaimana dunia nyata "bekerja" ... (dua ekor sapi benar-benar sepenuhnya entitas entitas, bahkan jika kita melihatnya sebagai "sama" dalam banyak hal)
sumber
Saya pikir "Apakah" adalah bagian penting dari pertanyaan ini. Saya pikir pemrograman Berorientasi Objek tentu bisa memodelkan "objek" dunia nyata, tapi ini pemrograman . Tidak ada metodologi yang tidak dapat disalahgunakan, jadi saya tidak berpikir itu adil untuk mengatakan "OOP tidak membuat model dunia nyata" hanya karena Anda dapat melakukan hal-hal bodoh dengan Objects. Itu tidak adil daripada mengatakan bahwa Pointer tidak aman karena Anda dapat melakukan hal-hal bodoh dengan pointer.
Artikel Wikipedia tentang masalah ini merangkumnya dengan baik:
Masalahnya adalah kecuali jika program Anda adalah simulasi alam semesta, Anda hanya peduli pada bagian dari dunia nyata - maka "model". Untuk itulah model dibuat, mereka memberi Anda struktur dan fungsionalitas yang perlu Anda tampilkan.
Di dunia nyata kita memiliki hal-hal (Objek) dan hal-hal dapat melakukan tindakan (metode). Kita dapat mengukur aspek-aspek hal (Properti). OOP memiliki setiap potensi untuk memodelkan hal-hal dunia nyata ketika digunakan dengan cara reduksionis; setiap hal yang kompleks memiliki subkelas yang lebih kecil atau lebih spesifik dan semua hal ini memiliki interaksi alami melalui metode.
OOP adalah metode abstraksi, sehingga hal praktis adalah apakah OOP benar-benar logis model objek di Dunia Nyata, itu kurang penting bahwa Anda tidak pemodelan setiap satu kemungkinan hal segala sesuatu yang bisa lakukan . Jika Anda perlu melakukan setiap hal yang mungkin, Anda tidak benar-benar menjadi model .
sumber
Untuk berpikir tentang orientasi objek dalam konteks yang tepat, mari kita naik satu tingkat abstraksi dan berbicara tentang pemrograman secara umum, oke?
Terlepas dari apakah Anda mengambil OO atau pendekatan fungsional, program Anda harus melakukan sesuatu, bukan? Inti dari program ini adalah untuk menunjukkan perilaku tertentu yang diberikan serangkaian rangsangan tertentu. Jadi alasan mengapa program itu ada adalah karena mereka melakukan sesuatu. Kata kuncinya di sini adalah perilaku .
Selain mempertimbangkan perilaku apa yang harus diterapkan oleh suatu program, program Anda umumnya perlu menunjukkan kualitas tertentu. Misalnya, tidak cukup bagi program pemantau jantung untuk memiliki perilaku yang diperlukan - biasanya juga perlu berkinerja cukup cepat untuk beroperasi dalam waktu yang hampir bersamaan. "Kualitas" lain yang mungkin perlu ditunjukkan oleh suatu program adalah: keamanan, fleksibilitas, modularitas, ekstensibilitas, keterbacaan, dan sebagainya. Kami menyebutnya Atribut Kualitas Arsitektur ini . Jadi kita dapat mengatakan bahwa program kita perlu memenuhi tujuan perilaku (fungsional) tertentu serta menunjukkan kualitas tertentu (non-fungsional).
Sejauh ini, tidak ada yang berbicara tentang OO, bukan? Ayo lakukan sekarang.
Setelah seorang insinyur memahami persyaratan (perilaku, AQA, kendala, dll), muncul pertanyaan: bagaimana saya harus mengatur kode saya sehingga melakukan semua hal yang perlu dilakukan sementara juga menunjukkan kualitas yang diperlukan untuk menjadi program yang bermanfaat? Pemrograman berorientasi objek adalah strategi untuk mengatur fungsionalitas program Anda ke dalam modul kohesif objek kerja sama. Pemrograman fungsional hanyalah strategi lain untuk mengatur fungsionalitas program Anda, dan melakukannya dengan cara yang berbeda. Kedua strategi memiliki kekuatan dan kelemahan mereka.
Kami telah menyaksikan kebangkitan baru-baru ini dalam konsep-konsep fungsional karena memiliki kekuatan yang sangat menarik untuk pemrosesan yang sangat didistribusikan, di antara alasan-alasan lainnya.
Tetapi kembali ke OO, Anda dapat melihat sekarang bahwa itu tidak harus memodelkan "dunia nyata"; apa yang dilakukannya adalah mengatur perilaku program Anda sehingga program Anda dapat menunjukkan kualitas yang diperlukan untuk memenuhi sejumlah tujuan bisnis. Teknik seperti TDD, DDD, dan BDD adalah cara kami menemukan cara terbaik untuk mengatur objek kami. Buku-buku seperti Prinsip, Pola, dan Praktek , Tumbuh Perangkat Lunak Berorientasi Objek Dipandu oleh Tes , Spesifikasi dengan Contoh , dan Desain Berbasis Domain menjabarkan teori dan praktik orientasi objek dengan fokus pada desain yang didorong perilaku.
Ketika Anda membaca tentang hal-hal seperti "pengamat, manajer, pabrik, dll", Anda menerapkan pola OO yang membantu program Anda menunjukkan kualitas tertentu yang mungkin diperlukan agar berguna. Mereka adalah "penerima terbukti" yang "cenderung bekerja", mengingat bahwa kebutuhan Anda cocok dengan masalah yang dipecahkan oleh pola tersebut.
Saya harap ini membantu Anda memahami tentang OO tanpa terlihat terlalu bias antara OO dan paradigma fungsional.
sumber
OOP menciptakan model yang bagus dari sudut pandang pemrograman, tidak mencerminkan dunia nyata.
Namun, ada perkiraan yang jauh lebih baik dari dunia nyata, yang dikenal dengan istilah bahasa spesifik domain ( DSL ). Misalnya Boo memberi Anda kemampuan untuk menulis kode yang dapat dibaca manusia dalam bahasa Inggris yang hampir polos (sampel dari artikel ).
Contoh lain adalah kerangka pengujian penerimaan pengguna otomatis berdasarkan bahasa Gherkin .
sumber
Terserah Anda, akhirnya. Tetapi OOP adalah cara yang tepat untuk melakukannya daripada metodologi lain seperti pemrograman Terstruktur atau berorientasi prosedur. Kebijakan prosedural mungkin bisa menyelesaikan masalah Anda, tetapi dengan mengikuti OOP dapat membuat hidup Anda lebih mudah.
sumber