Skip to content

Programming

chetabahana edited this page Dec 21, 2022 · 1 revision

Programming (pemrograman) adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun suatu program komputer.

Table of Contents

Desain

Beberapa prinsip pemrograman berorientasi objek adalah prinsip-prinsip desain kelas. Dalam project ini kita analogikan opsi² tersebut sebagai bentuk hubungan antar objek.


Untuk penampilan dari cara dokumentasinya Anda bisa pelajari disini:

Note: If you can't understand Bahasa, you may see what this all about here in Stack Overflow.

Kelas

Menggunakan kelas yang dirancang dengan baik membantu meningkatkan stabilitas dan pemeliharaan aplikasi Anda. Objek yang dirancang dengan baik hanya memiliki satu tanggung jawab dan dapat digunakan kembali, fleksibel, dan dikemas.

Properti suatu objek adalah apa yang diketahuinya dan metodenya adalah apa yang dapat dilakukannya.

  1. Properti objek klien akan mencakup semua detail penting tentang klien dan metode-metodenya akan dapat mengubahnya.
  2. Objek biaya akan memiliki metode yang diperlukan untuk menghitung biaya proyek berdasarkan jam kerja, tarif per jam, biaya bahan, dan biaya.

Prinsip

Single responsibility principle (SRP) menyatakan bahwa suatu kelas tidak boleh memiliki lebih dari satu tanggung jawab. Jika memang memiliki banyak tanggung jawab, perubahan satu tanggung jawab dapat secara tidak sengaja melanggar tanggung jawab lainnya di kelas.

Ini dapat menyebabkan efek domino di aplikasi Anda, menyebabkannya melakukan atau memecah dengan cara yang tidak terduga.

Tanyakan pada diri Anda apakah objek yang Anda rancang dapat digunakan dalam versi aplikasi berikutnya dengan sedikit perubahan. Apakah bisa berfungsi jika aplikasi dikonfigurasi ulang? Bisakah ini bekerja di aplikasi lain?

Anda akan dapat menjawab ya untuk setidaknya salah satu dari pertanyaan ini jika Anda sedang membangun objek fleksibel yang dapat digunakan kembali.

Flexible

Di dunia nyata, objek sering menyembunyikan informasi mereka dan cara kerjanya. Mereka memiliki antarmuka publik yang memungkinkan Anda untuk berhasil menggunakan objek tanpa mengetahui apa pun tentang cara kerjanya.

Anda tidak perlu mengetahui detail internal untuk menggunakan objek selama Anda tahu cara menggunakan antarmuka publiknya.

Ketika Anda mulai menggunakan prinsip penyesuaian pewarisan, objek Anda dapat mencapai tingkat usabilitas yang lebih tinggi melalui pemetaan (mapping) dari bagan dan diagram.

Menurut Kamus Besar Bahasa Indonesia (KBBI):

  • Skema: rangka/kerangka (rancangan, paparan dan sebagainya); garis besar; denah;
  • Bagan: alat peraga grafik untuk menyajikan data agar mempermudah penafsiran;
  • Diagram : gambar yang memperlihatkan jalannya pelaksanaan kegiatan;
Dari ketiga kata di atas kata Skema mengandung arti yang paling mendasar, oleh karenanya maka dalam project ini kita pakai untuk mulai menjelaskan Konsep secara garis besar.

Selanjutnya guna menyamakan persepsi maka uraian dengan huruf tebal akan diambil sebagai acuan yang membedakan pemakaian dari kata Bagan dan Diagram.

Object

Saat mendesain objek, ingatlah usabilitas dan fleksibilitas. Anda ingin menulis kelas yang dapat digunakan berulang kali dalam aplikasi Anda, dan mungkin di kelas yang akan datang.

Pikirkan tentang sakelar lampu. Untuk menyalakan lampu, Anda cukup beralih sakelar. Anda tidak perlu menjadi tukang listrik atau mengerti apa pun tentang listrik untuk mengerjakan sistem listrik di sebuah ruangan.

Operasi

Mobil adalah contoh bagus lainnya. Selama Anda tahu cara menggunakan pedal gas dan rem, setir, dan kunci kontak, Anda bisa mengemudi.

Anda tidak perlu memahami bagaimana mesin, atau transmisi, atau sistem kelistrikan bekerja untuk mengendarai mobil. Anda juga tidak perlu tahu sifat-sifat spesifik mobil seperti ukuran mesin, tenaga kuda, atau torsi.

Orientasi

Di bawah ini adalah tiga versi kelas persegi panjang yang dirancang untuk menggambar persegi panjang. Setiap versi kelas membawanya lebih dekat untuk mencapai tujuan SRP, usabilitas ulang, fleksibilitas, dan enkapsulasi.

Dalam pemrograman berorientasi objek, objek yang dirancang dengan baik merangkum data dan fungsionalitasnya dari objek lain. Anda dapat mempelajari lebih lanjut tentang enkapsulasi dalam konsep pemrograman berorientasi objek: Enkapsulasi.

Metode

Memiliki konsep getter dan setter implisit yang memungkinkan Anda untuk menyembunyikan detail implementasi lebih lanjut dari pengguna saat mengatur atau membaca properti untuk menyegarkan apa yang ditampilkan di layar.

Pembuat dan penyetel tersirat adalah benar-benar dua fungsi yang terlihat seperti properti tunggal untuk pengguna objek. Satu fungsi — pengambil — disebut ketika properti dibaca. Fungsi lainnya — setter — dipanggil ketika properti diatur.

Delegasi

Delegasi, dalam komputasi atau pemrograman komputer, secara umum merujuk pada satu entitas yang memberikan sesuatu kepada entitas lain, dan secara sempit ke berbagai model hubungan tertentu. Ini termasuk:

  1. Delegasi (pemrograman berorientasi objek), mengevaluasi class dari satu objek (penerima) dalam konteks yang lain, objek asli (pengirim).
  2. Pola pendelegasian, pola desain yang menerapkan fitur ini.
  3. Penerusan (pemrograman berorientasi objek), teknik yang sering membingungkan di mana objek pengiriman menggunakan class dari objek lain, tanpa objek penerima memiliki pengetahuan tentang objek pengirim asli.
  4. Agregasi atau kaidah-kognitif, istilah umum untuk satu objek menggunakan objek lain.
  5. Suatu bentuk pointer fungsi yang digunakan oleh Common Language Infrastructure (CLI), untuk memanggil dan secara opsional objek dalam proses interaksi.

Pewarisan

Kita telah bahas metode Encapsulation sampai ke Inheritance, maka pada proses pembentukan Class akan ditelusuri akurasinya terhadap kaidah kognitif.

Dalam pemrograman berorientasi objek, pewarisan memungkinkan objek baru mengambil properti dari objek yang ada. Kelas yang digunakan sebagai dasar pewarisan disebut kelas superclass atau base. Kelas yang mewarisi dari superclass disebut subclass atau turunan kelas.

Komposisi

Istilah kelas induk dan kelas anak juga merupakan ketentuan yang dapat diterima untuk digunakan masing-masing. Seorang anak mewarisi properti dan metode yang terlihat dari induknya sambil menambahkan properti dan metode tambahannya sendiri.

Subclass adalah turunan dari superclass yang lebih spesifik. Misalnya, jeruk adalah buah jeruk, yang merupakan buah. Seorang gembala adalah seekor anjing, yang merupakan binatang. Klarinet adalah alat musik tiup kayu, yang merupakan alat musik.

Jika hubungan adalah tidak ada antara subclass dan superclass, Anda tidak boleh menggunakan warisan. Jeruk adalah buah; jadi tidak apa-apa untuk menulis kelas Oranye yang merupakan subkelas dari kelas Buah.

Sebaliknya, dapur memiliki wastafel. Tidak masuk akal untuk mengatakan bahwa dapur adalah wastafel atau bahwa wastafel adalah dapur.

Memiliki hubungan menunjukkan komposisi (lihat konsep pemrograman berorientasi objek: Komposisi dan agregasi) daripada warisan.

Property

Bersama-sama, fungsi-fungsi ini memungkinkan pengguna kelas Anda untuk mengakses properti pribadi seolah-olah mereka mengakses properti publik.

Selain itu, akses diberikan tanpa memiliki dua fungsi publik untuk setiap properti pribadi yang menyediakan akses baca dan tulis.  

Manfaat tambahan dari fungsi setter adalah menyediakan tempat yang nyaman untuk memastikan bahwa data dibentuk dengan cara yang diharapkan oleh objek Anda.

Menggunakan fungsi setter, suatu objek dapat berpotensi memvalidasi data sebelum disimpan secara internal, mengurangi kebutuhan untuk lebih lanjut memeriksa data setiap kali digunakan dan memberikan beberapa ukuran konsistensi untuk keadaan internal objek.

Antarmuka

Anda sekarang memiliki kemampuan untuk melakukan pekerjaan tambahan ketika salah satu dipanggil. , argumen diperiksa dan metode dipanggil, tetapi sekarang dilakukan secara implisit alih-alih secara eksplisit, menghapus kemungkinan kesalahan pengguna dan menyembunyikan detail implementasi.

Metode pertama adalah untuk menyediakan cara yang disederhanakan dan dimengerti untuk menggunakan objek Anda tanpa perlu memahami kompleksitas di dalamnya.

Seperti disebutkan di atas, pengemudi tidak perlu tahu cara kerja mesin pembakaran internal. Cukup mengetahui bagaimana menghidupkan mobil, bagaimana melibatkan transmisi jika Anda ingin bergerak, cara menyediakan bahan bakar, cara menghentikan mobil, dan cara mematikan mesin.

Anda tahu menggunakan kunci, shifter (dan mungkin kopling), pedal gas dan pedal rem untuk menyelesaikan setiap operasi ini. Pengoperasian dasar ini membentuk antarmuka untuk mobil. Pikirkan sebuah antarmuka sebagai kumpulan hal-hal yang dapat Anda lakukan untuk mobil tanpa mengetahui bagaimana masing-masing hal itu bekerja.   Menyembunyikan kompleksitas mobil dari pengguna memungkinkan siapa saja, bukan hanya mekanik, untuk mengendarai mobil.

Mekanisme

Dengan cara yang sama, menyembunyikan fungsionalitas kompleks objek Anda dari pengguna memungkinkan siapa saja untuk menggunakannya dan menemukan cara untuk menggunakannya kembali di masa depan terlepas dari pengetahuan mereka tentang cara kerja internal.

Konsep ini menjaga detail implementasi tersembunyi dari sisa sistem adalah kunci untuk desain berorientasi objek.   Metode kedua adalah menyembunyikan kompleksitas adalah untuk mengelola perubahan. Saat ini sebagian besar dari kita yang berkendara menggunakan kendaraan dengan mesin pembakaran internal bertenaga bensin.

Namun, ada hibrida gas-listrik, motor listrik murni, dan berbagai mesin pembakaran internal yang menggunakan bahan bakar alternatif. Masing-masing tipe mesin memiliki mekanisme internal yang berbeda namun kami dapat menggerakkan masing-masing karena kompleksitasnya telah disembunyikan.

Ini berarti bahwa, meskipun mekanisme yang mendorong perubahan mobil, sistem itu sendiri berfungsi dengan cara yang sama dari perspektif pengguna.

Integrasi

Pada bagian ini kita akan bahas konfigurasi berdasarkan Metode OOPs.


Prinsip yang disarankan Metode OOPs sesuai paradigma pemrograman adalah sbb:

  1. Perluas fungsionalitas kelas setiap kali Anda mendapatkan kesempatan untuk menyelesaikan analisis kompleks menggunakan pewarisan. Ubah mereka menjadi skrip yang dapat dieksekusi dan letakkan di dalam modul kecil.
  2. Bangun kebiasaan memodulasi pekerjaan Anda sehingga dapat dengan mudah digunakan kembali dan diperluas oleh siapa saja, di mana saja.

Modulasi

Sesuai dengan tujuan yang ingin dicapai maka cara identifikasi ini dapat Anda lakukan dengan berbagai macam pola dan style. Berikut ini cara identifikasi yang dilakukan dalam projek ini.



Pengertian dari modul:

  • standar atau satuan pengukur
  • unit kecil dari satu sistem yang dapat beroperasi sendiri
  • satuan bebas yang merupakan bagian dari struktur keseluruhan
  • satuan standar yang bersama-sama dengan yang lain digunakan secara bersama
  • komponen dari suatu sistem yang berdiri sendiri, tetapi menunjang program dari sistem itu
### module
const privateHello = 'hello' // <- module code (private)
export const publicHello = 'hello'; // <- module code (public)


### class
export class Classes { // <- module AND class code (public)
    private privateHello = 'hello'; // <- class code (private)
    public publicHello = 'hello'; // <- class code (public)
} // <- class code (public)
const anotherPrivateHello = 'hello'; // <- module code (private)
export const anotherPublicHello = 'hello'; // <- module code (public)


### prototype
export function Prototypes() { // <- module AND prototype code (public)
    const privateHello = 'hello'; // <- prototype code (private)
    this.publicHello = 'hello'; // <- prototype code (public)
} // <- prototype code (public)
const anotherPrivateHello = 'hello'; // <- module code (private)
export const anotherPublicHello = 'hello'; // <- module code (public)

Operasional

Node.js adalah salah satu bahasa pemrograman yang memungkinkan pembuatan Web Server dan alat jaringan menggunakan JavaScript dan kumpulan "modul" yang menangani berbagai fungsi inti.

Modul disediakan untuk sistem file I/O, jaringan (DNS, HTTP, TCP, TLS/SSL, atau UDP), data biner (buffer), fungsi kriptografi, aliran data, dan fungsi inti lainnya yang semuanya dapat difungsikan via API. Selain Javascript, Modul Node.js juga support CoffeeScript, Dart, TypeScript, ClojureScript dll.

Node.js terutama digunakan untuk membangun program jaringan Web server seperti halnya PHP. Perbedaan paling signifikan antara Node.js dan PHP adalah bahwa sebagian besar fungsi dalam blok PHP hingga selesai (perintah hanya dijalankan setelah perintah sebelumnya selesai).

Dari sejumlah bahasa pemrograman yang tersedia, Node.js ini masih tergolong baru. Node.js lahir ketika penulisnya mengkritisi pengelolaan di banyak server dimana umum terjadi kode memblok keseluruhan proses dalam kasus koneksi simultan atau menyisakan banyak tumpukan eksekusi.

Fungsi Node.js adalah non-pemblokiran, perintah dijalankan secara bersamaan atau bahkan paralel dengan menggunakan panggilan balik (Callback) untuk menandakan penyelesaian atau kegagalan.

Instalasi node_modules dilakukan via package.json. Jika Anda temukan SyntaxError:'sourceType: module', salah satu solusinya gunakan setup Babel Loader untuk Webpack.

Pengelolaan

NPM adalah salah satu pengelola paket yang berbasis modul. Ini adalah manajer paket default untuk lingkungan runtime JavaScript Node.js.


Untuk step berikut npm mendukung properti "scripts" dari file package.json:

  • prepublish: Jalankan SEBELUM paket ini dikemas dan dipublikasikan, serta pada instalasi npm lokal tanpa argumen. (Lihat di bawah)
  • prepare: Jalankan keduanya SEBELUM paket dikemas dan dipublikasikan, pada npm lokal instal tanpa argumen apa pun, dan ketika menginstal dependensi git (Lihat di bawah). Ini dijalankan SETELAH pra-publikasi, tetapi SEBELUM pra-publikasi Hanya.
  • prepublishOnly: Jalankan SEBELUM paket disiapkan dan dikemas, HANYA pada npm publish. (Lihat di bawah.)
  • prepack: jalankan SEBELUM tarball dikemas (pada paket npm, npm publish, dan ketika menginstal dependensi git)
  • postpack: Jalankan SETELAH tarball telah dihasilkan dan dipindahkan ke tujuan akhirnya.
  • publish, postpublish: Jalankan SETELAH paket diterbitkan.
  • prepublishOnly: Jalankan SEBELUM paket diinstal
  • instal, postinstall: Jalankan SETELAH paket diinstal.
  • preuninstall, uninstall: Jalankan SEBELUM paket dihapus.
  • postuninstall: Jalankan SETELAH paket itu dihapus.
  • preversion: Jalankan SEBELUM menabrak versi paket.
  • version: Jalankan SETELAH membenturkan versi paket, tetapi SEBELUM komit.
  • postversion: Jalankan SETELAH menabrak versi paket, dan SETELAH komit.
  • pretest, test, posttest: Dijalankan oleh perintah tes npm.
  • prestop, stop, poststop: Dijalankan oleh perintah npm stop.
  • prestart, start, poststart: Dijalankan oleh perintah start npm.
  • prerestart, restart, postrestart: Dijalankan oleh perintah restart npm. Catatan: npm restart akan menjalankan skrip berhenti dan mulai jika tidak ada skrip restart yang disediakan.
  • preshrinkwrap, shrinkwrap, postshrinkwrap: Dijalankan oleh perintah npm shrinkwrap.

Identifikasi

Situs GitHub memungkinkan Anda untuk mengatur tampilan halaman situs di internet dalam satu waktu yang bersamaan walaupun file² atau modul² yang Anda gunakan berada di banyak repository yang berlainan.


Hal ini tentu saja akan sangat membantu kita menampilkan halaman atau data yang dihasilkan oleh project yang berbeda namun dapat diintegrasikan sehingga dapat berkomunikasi satu sama lain.

Jadi dalam menentukan identifikasi yang penting adalah mengatur tata letak Hirarki nya saja.

Sebagai analogi, pikirkan boneka Rusia yang cocok satu sama lain. Setiap tata letak cocok dengan tata letak lain yang ditentukan.

Ketika tata letak menentukan tata letak lain, itu berarti konten tata letak pertama akan dimasukkan ke dalam tag {{content}} tata letak kedua.

Penampilan

├── index.html
├── js/
   ├── main.js
   ├── models/
   ├── views/
   ├── collections/
   ├── templates/
   └── libs/
       ├── backbone/
       ├── underscore/
       └── ...
├── css/
└── 

Diagram berikut menunjukkan cara kerja tata letak di Jekyll/Liquid via file Collections:

Dalam contoh ini didapatkan keteraturan tata letak seperti ini:

  1. Konten dari dokumen Markdown dokumen.md yang menentukan layout: docs didorong ke tag {{content}} file tata letak docs.html.
  2. Karena tata letak dokumen itu sendiri menentukan tata letak: halaman, konten dari docs.html didorong ke tag {{content}} di file tata letak page.html.
  3. Akhirnya karena tata letak halaman menentukan layout: default, konten dari page.html dimasukkan ke tag {{content}} file tata letak default.html.

Implementasi

Dimungkinkan juga untuk menentukan identifikasi secara global menggunakan pola glob (berlaku terbatas pada pola yang mengandung *) saat mencocokkan default.

Sebagai contoh, dimungkinkan untuk mengatur tata letak khusus untuk setiap special-page.html dalam subfolder dari folder section bagian mana saja:

Dengan menerapkan Jekyll/Liquid pada project, maka Anda akan dapat setel semua pengaturan Korelasi secara global sesuai yang Anda inginkan di bagian default file _config.yml.

Anda pun dapat memilih untuk mengabaikan pengaturan dari pasangan lingkup / nilai lain dengan menentukan Korelasi yang lebih spesifik untuk lingkup tersebut.

Identifikasi ini perlu diatur sedemikian rupa sehingga terindikasi unik pada setiap jenjang penurunan sehingga memudahkan dalam konstruksi data yang dialirkan maupun rekonstruki pewarisan.

id: 15

---+-----+-----
 1 | 1   | 15
---+-----+-----
 2 | 16  | 25
---+-----+-----
 3 | 26  | 50
---+-----+-----
 4 | 51  | 84
---+-----+-----
 5 | 85  | 99
---+-----+-----
Sekian.

SALAM Sukses!
© Chetabahana Project

Referensi

Clone this wiki locally