-
Notifications
You must be signed in to change notification settings - Fork 5
Diagram
Diagram adalah suatu representasi simbolis informasi dalam bentuk geometri dua dimensi atau visualisasi tiga dimensi yang kemudian diproyeksikan ke permukaan dua dimensi.
Berdasarkan spesifikasinya diagram memiliki banyak jenis.
Pada project ini akan diimplementasikan sejumlah diagram untuk merekonstruksi penelusuran. Diantaranya seperti yang terlihat dalam diagram sintaks di bawah ini.
Diagram ini adalah alat untuk menggambarkan sintaks, juga dikenal sebagai diagram rel, dibangun dari tata bahasa bebas konteks yang ditentukan dalam EBNF.
Fitur yang satu ini adalah
- penggunaan notasi EBNF W3C,
- web-memoing tata bahasa dari spesifikasi W3C,
- pengeditan tata bahasa secara online,
- presentasi diagram dalam SVG,
- sepenuhnya ditulis dalam bahasa web (XQuery, XHTML, CSS, JavaScript).
Saya ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll.
Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya.
Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi objek.
Tujuan dari OOP diciptakan adalah untuk mempermudah dalam membangun konfigurasi dan pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari.
Berdasarkan Metode OOPs maka pola ini dapat disusun sesuai bagan berikut:
Object merupakan perwujudan dari class, setiap object akan mempunyai attribute dan method yang dimiliki oleh class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia. Setiap object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.![](https://user-images.githubusercontent.com/36441664/68235749-5c993580-0036-11ea-8f3b-8da3496c329e.jpg)
Prosedur dalam pemrograman berorientasi objek dikenal sebagai metode; variabel juga dikenal sebagai bidang, anggota, atribut, atau properti. Ini mengarah pada ketentuan berikut:
- Variabel kelas - milik kelas secara keseluruhan; hanya ada satu salinan dari masing-masing
- Variabel instan atau atribut - data yang dimiliki oleh objek individu; setiap objek memiliki salinannya masing-masing
- Variabel anggota - merujuk pada variabel kelas dan contoh yang ditentukan oleh kelas tertentu
- Metode kelas - milik kelas secara keseluruhan dan hanya memiliki akses ke variabel kelas dan input dari pemanggilan prosedur
- Metode instance - milik objek individual, dan memiliki akses ke variabel instan untuk objek spesifik yang dipanggil, input, dan variabel kelas
Misal class berisi data anggota dan fungsi anggota:
Setiap objek dikatakan sebagai instance dari class tertentu (misalnya, objek dengan bidang namanya diatur ke "Mary" mungkin merupakan instance dari class Karyawan).
Hubungan antara Class, Method dan Attribute (property) bisa dijelaskan sbb:
- Method atau yang biasa juga disebut behaviour merupakan bagian yang dimiliki oleh sebuah class yang dapat melakukan operasi, bertindak atau mengerjakan sesuatu.
- Attribute atau yang biasa juga disebut state/properties/field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.
Dalam setiap penurunan dari Metoda OOP kita akan mendapatkan turunan² baru. Guna pewarisan dan perekaman interaksi kita perlu menetapkan identifikasi dari masing² turunan tersebut berdasarkan hirarki dan korelasi nya.
Inheritance merupakan konsep mewariskan attribute dan method yang dimiliki oleh sebuah class kepada class turunannya.
Dengan konsep ini class yang dibuat cukup mendefinisikan attribute dan method yang spesifik didalamnya, sedangkan attribute dan method yang lebih umum akan didapatkan dari class yang menjadi induknya.
- Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada.
- Penurunan sifat ini bisa dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah kelas tersebut menjadi semakin spesifik.
- Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan perilaku khusus dari kelas supernya.
- Dengan konsep pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang semua kodekode itu.
Polymorphism merupakan konsep yang memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu object agar melakukan suatu tindakan yang mungkin secara prinsip sama tetapi secara proses berbeda.
- Polymorphism merupakan kemampuan objek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama.
- Polymorphism juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan.
![](https://user-images.githubusercontent.com/36441664/69991227-e4ad2500-1579-11ea-8b4a-ff5a5c8aa61f.png)
Misalnya, objek bertipe Circle dan Square berasal dari kelas umum yang disebut Shape. Fungsi Draw untuk setiap jenis Shape mengimplementasikan apa yang diperlukan untuk menggambar dirinya sendiri sementara kode panggilan dapat tetap dengan tipe Shape tertentu yang sedang digambar.
Ini adalah jenis abstraksi lain yang menyederhanakan kode eksternal ke hierarki kelas dan memungkinkan pemisahan masalah secara lebih jelas.
Tujuan utama dari penelusuran yang akan dilakukan adalah mendapatkan data turunan yang dapat menunjang data yang sudah ada. Object, class dan metode yang sudah diuraikan di atas adalah hanya merupakan bagian dari perangkat berupa Skema yang digunakan untuk meraih tujuan ini.
Bahasa berorientasi objek menyediakan kerangka kerja dan motivasi untuk mengeksplorasi interaksi antara konsep tipe dengan abstraksi data dan polimorfism, karena mereka memperluas gagasan tipe ke abstraksi data dan karena pewarisan tipe merupakan bentuk penting polimorfism.
Abstraction adalah suatu cara untuk melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik dengan empat buah ban, jok, stir kemudi dan sebagainya.
Dengan Abstraction, suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan sebagainya.
Encapsulation merupakan suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem tersebut.
- Istilah enkapsulasi sebenarnya adalah kombinasi data dan fungsionalitas dalam sebuah unit tunggal sebagai bentuk untuk menyembunyikan detail informasi.
- Proses enkapsulasi memudahkan kita untuk menggunakan sebuah objek dari suatu kelas karena kita tidak perlu mengetahui segala hal secara rinci.
- Enkapsulasi menekankan pada antarmuka suatu kelas, atau dengan kata lain bagaimana menggunakan objek kelas tertentu.
![](https://user-images.githubusercontent.com/36441664/70703416-b4485200-1d02-11ea-9db1-41ba6e9fe2a9.png)
Prinsip yang disarankan Metode OOPs sesuai paradigma pemrograman adalah sbb:
- 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.
- Bangun kebiasaan memodulasi pekerjaan Anda sehingga dapat dengan mudah digunakan kembali dan diperluas oleh siapa saja, di mana saja.
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
![](https://user-images.githubusercontent.com/36441664/71568015-74e97600-2af6-11ea-8bae-72507d036d3f.png)
### 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)
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.
- Advanced Node.js Project Structure Tutorial
- Structure preference for a large-scale Node.js project
- How npm handles the "scripts" field
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.
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.
├── 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:
- Konten dari dokumen Markdown
dokumen.md
yang menentukanlayout: docs
didorong ke tag{{content}}
file tata letakdocs.html
. - Karena tata letak dokumen itu sendiri menentukan tata letak: halaman, konten dari
docs.html
didorong ke tag{{content}}
di file tata letakpage.html
. - Akhirnya karena tata letak halaman menentukan
layout: default
, konten daripage.html
dimasukkan ke tag{{content}}
file tata letakdefault.html
.
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.
![](https://user-images.githubusercontent.com/36441664/72682632-ba9bcc00-3b01-11ea-9a94-aabac5f3e3ff.jpg)
- Struktur dan Hirarki disetel berdasarkan Piramida Data via layout script
- Tipe Diagram dipilih dan dijalankan berdasarkan Output JSON via initial script
- Setiap Diagram dikembangkan secara terpisah dan diintegrasikan via Fitur GitHub
- Piramida data pada repository terkait diupdate dengan Paket NPM via GitHub Actions
- Kendali perubahan (versi) diatur via scripts-field-handle yang ditempatkan sesuai Korelasi
Berdasarkan Konsep di atas, Object akan dikembangkan sebagai pengejawantahan dari etimologi, sedangkan untuk terminologi maka kita akan terapkan metode Encapsulation sampai ke Inheritance dimana pada proses pembentukan Class akan ditelusuri akurasinya terhadap kaidah kognitif.
Pola penelusuran ini akan dilakukan berdasarkan piramida dari setiap pola dengan menggunakan jenis diagram yang dapat mendukung interaksi dalam proses pewarisan. Berikut ini tabulasi antara pola penelusuran dan jenis diagram yang digunakan.
No. | Metode | Penelusuran | Implementasi | Diagram |
---|---|---|---|---|
1. | Object (parent) | - | Attribute (parent) | Flowchart |
2. | Encapsulation | Pola | Artifacts | Sequence |
3. | Abstraction | Hirarki | Method | Grammar |
4. | Polymorphism | Korelasi | Model | Channel |
5. | Inheritance | Repository | Track | Route |
6. | Class | Workflows | Trace | Tree |
7. | Object (child) | Kaidah Kognitif | Attribute (child) | Flowchart |
Catatan:
- Dalam project ini proses penelusuran akan disetel secara berulang dimana targetnya adalah produk turunan (child) dari object yang diuraikan pada Konsep Kerja.
- Diagram Sequence seperti terlihat di bawah ini disetel sebagai titik awal yang diasumsikan sebagai hasil proses penelusuran dari object sebelumnya (parent).
![](https://user-images.githubusercontent.com/36441664/72747430-358ae280-3be7-11ea-9869-77b76d9302a5.jpg)
Dengan memodelkan tipe dan struktur modul bahasa pemrograman ke model berbasis-kalkulus memungkinkan untuk mengeksplorasi tentang sifat-sifat abstrak object secara sederhana.
Secara matematis metode ini dapat berfungsi sebagai dasar desain dengan fasilitas yang lebih ekspresif dan tidak tergantung pada bahasa pemrograman dimana modul tersebut disematkan.
Pemodelan ini menjadi dasar untuk diterapkan secara monomorfik dimana selanjutnya mekanisme polimorfik seperti overloading, koersi, subtyping, dan parameterisasi dapat ditinjau.
Untuk project ini tujuan akhir dari penelusuran adalah menentukan metoda CI/CD yang paling efisien dalam melaksanakan Optimasi.
This documentation is mapped under Mapping and licensed under Apache License, Version 2.0.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright (c) 2018-2020 Chetabahana Project