Anda di halaman 1dari 25

1. Pelajari tentang framework .

NET
Microsoft.NET Framework adalah sebuah perangkat lunak (Software) yang
digunakan terutama pada Sistem Operasi Microsoft Windows. .NET Framework
merupakan suatu lingkungan kerja untuk memudahkan pengembangan dan eksekusi
berbagai macam bahasa pemrograman dan kumpulan library agar dapat bekerja
sama dalam menjalankankan aplikasi berbasis Windows.

Beberapa perbedaan Microsoft.Net :

>Microsoft .NET Framework 2.0


Mendukung Operating Systems: Windows 2000 Service Pack 3; Windows 98; Windows 98
Second Edition; Windows ME; Windows Server 2003; Windows XP Service Pack 2
Diperlukan Software: Windows Installer 3.0 (kecuali untuk Windows 98/ME, yang memerlukan
Windows Installer 2.0 atau yang lebih baru). Windows Installer 3.1 atau direkomendasikan yang
lebih baru. IE 5.01 atau yang lebih baru: Anda juga harus menjalankan Microsoft Internet
Explorer 5.01 atau yang lebih baru untuk semua instalasi dari .NET Framework.

>Microsoft .NET Framework 3.0


Supported Operating Systems: Longhorn (Windows Code Name); Windows Server 2003 Service
Pack 1; Windows Vista; dan Windows XP Service Pack 2

>NET Framework 4.0


Mendukung Operating Systems:Windows 7; Windows Server 2003 Service Pack 2; Windows
Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 1; dan Windows XP
Service Pack 3

Lihat spesifikasi untuk tiap versi jadi kalau Anda menggunakan WINDOWS7 tidak mungkin kan
pakai versi 2.0. Secara singkat Microsoft .NET Framework itu komponen yang dapat
ditambahkan di sistem operasi windows, yang menyertakan berbagai kerangka solusi-solusi
program. Fungsinya sebagai syarat untuk menjalankan aplikasi yang ditujukan untuk windows.
Kalau tidak diinstal, kemungkinan ada beberapa aplikasi di komputer yang tidak jalan. Fungsi
lain (buat programmer) yaitu untuk mempermudah peng-codingan dan eksekusi perintah.

Fungsi .Net Framework pada Windows


Fungsi utama dari .Net Framework pada windows adalah sebagai penterjemah dan pengeksekusi
sebuah perangkat lunak agar dapat berjalan pada sistem operasi windows. Sebenarnya tidak
semua aplikasi membuthkan net framework versi terbaru atau tidak perlu melakukan install net
framework. Akan tetapi pada beberapa kasus pada saat melakukan installasi aplikasi kita
diwajibkan untuk melakukan installasi .Net Framework terlebih dahulu agar bisa menjalankan
atau melakukan intallasi aplikasi tersebut.
Kegunaan net framework
Secara teori beberapa fungsi dari .net framework adalah :
Menyediakan lingkungan pemrograman berorientasi objek, apakah kode objek disimpan dan
dijalankan secara lokal, dijalankan secara lokal tetapi disebarkan melalui internet atau dijalankan
secara remote (dijalankan dari suatu tempat).
Menyediakan lingkungan untuk menjalankan suatu kode yang meminimalkan konflik saat
softwaredeployment disebarkan dan versioning /tentang versi.
Menyediakan lingkungan untuk menjalakan suatu kode yang menjamin keamanan saat kode
dijalankan, termasuk kode yang dibuat oleh pihak yang tidak diketahui atau pihak ketiga yang
setengah dipercaya.
Menyediakan lingkungan untuk menjalankan suatu kode yang dapat mengeliminasi masalah
performa dari lingkungan scripted dan interpreted.
Membuat pengembang memiliki pengalaman yang konsisten dalam berbagai tipe aplikasi
berbasis Windows dan aplikasi berbasis Web.
Tujuan .Net Framework
NET Framework dengan beberapa tujuan, antara lain:

 Mendukung penuh konsep Object Oriented Programing/ OOP yang berarti semua yang
ada di .NET Framework adalah objek.
 Menyederhanakan pemograman pada platform Windows.
 Menggunakan managed code sehingga penulisan kode menjadi lebih aman. Sebagai
contoh, Anda tidak perlu lagi membuang object secara manual karena sudah ditangani
oleh komponen Garbage Collection.

.NET Framwork sebenarnya terdiri dari dua kompunen utama, yaitu CLR (Common Language
Runtime) dan FCL (Framework Class Library).

Tentang Coomon Language Runtime /CLR


Coomon Language Runtime / CLR adalah pondasi utama dari .NET Framework. CLR
merupakan komponen yang bertanggung jawab terhadap berbagai macam hal, seperti melakukan
managemen memory, melakukan hak akses dari kode, melakukan kompilasi kode, dan berbagai
layanan system lainnya. Dengan adanya fungsi CLR ini maka aplikasi berbasis .NET Framework
juga biasa disebuat managed code, sedangkan aplikasi diluar itu biasa disebut unmanaged code.
Dengan adanya CLR maka tugas pengembang program menjadi lebih ringan karena banyak
tugas yang dahulu harus dikerjakan oleh pengembang telah digantikan secara otomatis oleh
komponen CLR, CLR akan melakukan kompilasi kode-kode aplikasi kita menjadi bahasa
assemly yang bernama MSIL tadi. Proses kompilasi ini sendiri akan dilakukan oleh komponen
yang bernama Just in Time(JIT).

Tentang Framework Class Library / FCL


FCL (.NET Framework Class Library) atau sering juga di sebut BCL (Base Case Library) adalah
koleksi dari reusable types yang sangat banyak dan terintegrasi secara melekat denagn CLR.
Kumpulan Class Library ini sangat berguna untuk pengembangan aplikasi karena pengembang
tidak perlu membuat semuanya dari awal karena sudah disediakan oleh .NET, misal class untuk
membuat aplikasi berbasis Windows, class untuk membuat objek-objek koleksi, class untuk
koneksi dengan database (ADO.NET), class untuk mengembangkan aplikasi berbasis web, class
WPF (Windows Presentation Fondation), dan masih banyak lagi.

CARA KERJA MICROSOFT .NET FRAMEWORK


Bahasa Source Code Microsoft .Net dikompilasi ke Microsoft Intermediate Language (MSIL).
MSIL kita bisa menyebutnya sebagai Intermediate Language (IL) atau Common Intermediate
Language (CIL). Microsoft Intermediate Language (MSIL) adalah CPU independen set instruksi
yang dapat dikonversi ke kode asli.

Metadata juga diciptakan dalam proses waktu kompilasi dengan Microsoft Intermediate
Language (MSIL) dan disimpan dengan kode dikompilasi. Metadata sepenuhnya merupakan
self-describing. Metadata disimpan dalam sebuah file yang bernama Manifest, dan berisi
informasi tentang member, types, references dan semua data lainnya yang dibutuhkan Common
Language Runtime (CLR) untuk eksekusi.
Net Framework Class Library

Dot NET Framework class library adalah suatu koleksi dari tipe data yang dapat digunakan ulang
yang terintegrasi dengan common language runtime. Class library berorientasi objek,
menyediakan tipe data dimana managed code dapat menurunkan fungsionalitasnya. Hal ini tidak
hanya membuat tipe data dari .NET Framework mudah digunakan tetapi juga mengurangi waktu
belajar dari fasilitas .NET Framework. Sebagai tambahan, komponen pihak ketiga dapat
terintegrasi dengan class dari .NET Framework.
Sebagai contoh, koleksi class .NET Framework mengimplementasikan set interface yang dapat
digunakan untuk membuat koleksi class anda sendiri. Koleksi class anda akan terpadu dengan
class-class .NET Framework.
Sebagaimana anda harapkan dari class library berorientasi objek, tipe-tipe data .NET Framework
memberikan fasilitas bagi anda untuk menyelesaikan sejumlah tugas pemrograman umum,
termasuk manajemen string, koleksi data, konektifitas database dan akses file. Sebagai tambahan
dari tugas-tugas umum tersebut, class library mengikutkan tipe data yang mendukung variasi
scenario development. Sebagai contoh, anda dapat menggunakan .NET Framework untuk
membangun type aplikasi dan layanan berikut:
· Aplikasi konsol
· Alikasi scripting atau hosted
· Aplikasi windows GUI (Windows Forms)
· Aplikasi ASP.NET
· XML Web Services
· Windows services
Dari uraian panjang lebar mengenai .NET Framework diharapkan anda mengerti bahwa Visual
Basic .NET merupakan bagian dari teknologi tersebut. Selain Visual Basic .NET kita dapat
gunakan bahasa pemrograman lain untuk menghasilkan aplikasi yang berjalan di atas .NET
Framework. Bahkan saat penulisan buku ini, penulis mendapatkan informasi bahwa .NET
Framework mendukung 15 bahasa pemrograman. Selain Visual Basic .NET terdapat C#, C++,
J#, Jscript, VBScript bahkan Perl, Cobol, dan Pascal dapat digunakanuntuk menghasilkan
aplikasi managed code.
Dot NET Framework saat ini juga dikembangkan untuk mobile dan embedded devices yang
disebut Compact .NET Framework. Efek pengembangan ini adalah dengan Visual Basic .NET
atau pemrograman yang mendukung framework .NET biasa juga dapat menghasilkan aplikasi
untuk mobile/smart device seperti Pocket PC. Jadi dengan menguasai Visual Basic .NET atau
salah satu pemrograman .NET kita dapat menghasilkan berbagai tipe aplikasi maupun target
aplikasi (server, desktop atau smart device seperti PDA).
Alur Kerja Microsoft .Net Framework

Common Language Runtime (CLR) menggunakan metadata untuk menemukan dan beban kelas,
menghasilkan kode asli, memberikan keamanan, dan mengeksekusi Managed Code. Kedua
Microsoft Intermediate Language (MSIL) dan Metadata yang di kumpulkan menjadi satu dikenal
sebagai Portabel Executable (PE) file. Portabel Executable (PE) seharusnya portabel di semua
sistem operasi 32-bit oleh Microsoft Net Framework.

Selama runtime Common Language Runtime (CLR) 's Just In Time (JIT) compiler mengubah
Microsoft Intermediate Language (MSIL) kode ke kode asli untuk Sistem Operasi. Kode asli
adalah Sistem Operasi independen dan kode ini dikenal sebagai Managed Code, yaitu, fungsi
bahasa yang dikelola oleh .NET Framework. Common Language Runtime (CLR) menyediakan
berbagai Just In Time (JIT) compiler, dan masing-masing bekerja pada arsitektur yang berbeda
tergantung pada Sistem Operasi, yang berarti Microsoft Intermediate Language (MSIL) dapat
dijalankan pada Sistem Operasi yang berbeda. Dari bagian berikut, Anda dapat melihat
bagaimana fungsi Common Language Runtime (CLR).

2. DASAR-DASAR ORIENTASI OBJEK

Pemrograman berorientasi objek (object-oriented programmingdisingkat OOP) merupakan


pemograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini
dibungkus dalam kelas-kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses
data, dan mengirim pesan ke objek lainnya.

Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan
mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi,
pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan
pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Istilah-istilah dalam OOP:

 Kelas atau Class


Merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan
tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan
fungsi-fungsi yang menunjuk pada berbagai macam perilaku/ turunan dari anjing. Sebuah class
adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun
terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam
sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut
digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program
akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program
tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program
ataupun sebaliknya.

 Objek
Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer,
objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer
berorientasi objek.

 Abstraksi
Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu
kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari
"pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan
berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan
ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik
digunakan untuk mengembangkan sebuah pengabstrakan.

 Enkapsulasi
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek
dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk
mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek
lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung
kepada representasi dalam objek tersebut.

 Polimorfisme melalui pengiriman pesan


Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan;
metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek
tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak
cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang
sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang
sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena
sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi
program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda
di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa
fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.

Beberapa istilah yang berhubungan dengan objek antara lain :

Atribut
Atribut menggambarkan data yang dapat memberikan informasi mengenai kelas atau objek
dimana atribut tersebut berada.
1. Metode
Metode adalah subprogram yang tergabung dalam objek bersama – sama dengan atribut.
Metode dipergunakan untuk pengaksesan terhadap data yang terdapat dalam objek tersebut.
Sering juga disebut sebagai procedure atau function.

2. Message
Message merupakan cara untuk berhubungan antara satu objek dengan objek lain dengan cara
mengikirimkan pesan oleh suatu objek kepada objek tertentu.

3. Operasi
Fungsi di dalam kelas yang dikombinasikan ke bentuk tingkah laku kelas suatu objek

Properti Objek

Layanan (Service)
Metode atau operasi yang berfungsi untuk memanipulasi objek itu sendiri.
Fungsi atau transformasi yang dapat dilakukan terhadap objek atau dilakukan oleh objek. Dapat
berasal dari:

Event
aktivitas atau aksi keadaan

Fungsi
kelakuan dunia nyataContoh: Read, Write, Move. Copy. Dan sebagainya. Klasifikasi Objek
Objek dapat dibedakan menjadi:

ADT (Abstract Data Type), Definisi dan kelas dimana komponen type menjadi atribut dan fungsi
primitif menjadi operasi/metode/lavanan.

Mesin ,Objek pasif yang punva status yang akan diaktifkan oleh objek lain. Fungsi primitif pada
mesin merupakan mekanisme transisi yang mengubah suatu status ke status lain.
Proses,Objek aktif yang mempunvai urutan kendall’ (thread of control).

Salah satu pemograman pendukung OOP adalah bahasa pemograman Java.

Java adalah salah satu bahasa pemograman OOP. Bahasa ini awalnya dibuat oleh James
Gosling. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan
sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal.
Aplikasi-aplikasi berbasis java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat
dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang
bersifat umum/non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan
dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan
aplikasi java mampu berjalan di beberapa platform sistem operasi yang berbeda yang berbeda,
java dikenal pula dengan slogannya, "Tulis sekali, jalankan di mana pun". Saat ini java
merupakan bahasa pemrograman yang paling populer digunakan, dan secara luas dimanfaatkan
dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.
Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0.
Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi
selanjutnya:

java.lang: Peruntukan kelas elemen-elemen dasar.


java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain
menggunakan jaringan TCP/IP.
java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.

Kelebihan bahasa pemograman Java antara lain:

 Multiplatform
Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform/ sistem operasi
komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini
pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang
dimengerti manusia menjadi bahasa mesin/ bytecode) sekali lalu hasilnya dapat dijalankan di
atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program
berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas
Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows,
Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan
programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk
meninterpretasikan bytecode tersebut.

 OOP (Object Oriented Programming - Pemrogram Berorientasi Objek)

 Perpustakaan Kelas Yang Lengkap


Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang
disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para
pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan
keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-
perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.

 Bergaya C++
Memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram
C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah
pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai
berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah
dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan
komputer.

 Pengumpulan Sampah otomatis


Memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu
melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang
dipakai secara luas).
Pemograman Java juga mempunyai kekurangan yaitu:

 Tulis sekali, jalankan di mana saja


Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain.
Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac
OS X.

 Mudah didekompilasi
Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini
dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut
bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga
terjadi pada Micosoft, NET Platform. Dengan demikian, algoritma yang digunakan program
akan lebih sulit disembunyikan dan mudah dibajak/ reverse-engineer.

 Penggunaan memori yang banyak.


Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat
tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object
Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi
terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka
yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

3. PENGATAHUAN DESIGN PATETERN

Design Pattern
adalah sebuah solusi untuk menyelesaikan masalah umum yang sering di temui dan dihadapi,
yang membentuk sebuah pola (pattern) tertentu dalam membuat sebuah program. Pattern
adalah bagaimana mendesain kelas dan bagaimana interaksi yang terjadi antar kelas tersebut
sehingga kelas yang kita bangun bisa lebih elegan dan reusable. Ada beberapa pattern yang
populer saat ini yang diciptakan oleh GoF (Gang of Four) yaitu Abstract Factory, Builder,
Factory Method, Prototype, Singleton, Adapter, Bridge, Composite, Decorator, Facade,
Flyweight, Proxy, Chain of Responbility, Command, Interpreter, Iterator, Mediator,
Mementto, Observer, State, Strategy, Template Method, Visitor.

Pola desain
merupakan penjelasan atau templat yang menunjukkan bagaimana cara menyelesaikan
sebuah masalah yang kemudian dapat digunakan di berbagai situasi yang berbeda-beda. Pola
desain untuk object-oriented biasanya menunjukkan relasi dan interaksi antar kelas danobjek,
tanpa menjelaskan kelas dan objek akhir yang terlibat dalam
sebuah aplikasi. Algoritmabiasanya tidak disebut sebagai pola desain, karena algoritma
menjadi solusi masalah komputasibukan masalah desain test.
Design pattern dapat dibagi menjadi 3 kelompok yaitu:
1. Creational design pattern
Pattern ini hanya berbicara tentang bagaimana meng-instance sebuah kelas. Secara teori
memang mudah untuk membuat object tetapi cara yang mudah tersebut belum tentu
efektif. Adapun jenis-jenis dari creational design pattern adalah Abstract Factory,
Builder, Factory Method, Object Pool, Prototype,Singleton. Dari sekian banyak jenis-
jenis tersebut ada yang memiliki fungsi yang sama dan saling melengkapi.
2. Structural design patterns
Tujuan pattern ini untuk membuat class composite atau object composite. Tujuan
utamanya adalam mempermudah dalam mendefinisi kan cara untuk meng-compose
object untuk fungsionalitas yang baru. Adapun contoh dari pattern ini adalah : Adapter
pattern, bridge pattern, composite pattern, Decorator, Facede, Flyweight, Proxy.
3. Behavioral design patterns
Pattern ini adalah bertujuan untuk menangani kominikasi antar kelas atau object. Adapun
contoh dari pattern ini adalah : Chain of responsibility, Command, Interpreter, Iterator,
Mediator, Observer, strategy.
Dari ketiga kelompok besar design pattern tersebut memiliki bagian-bagian seperti berikut
:

* Creational Pattern
1. Abstract Factory (Pembuatan Instance Object dari keluarga object (Children Object))
2. Builder (Kontruksi Object yang kompleks dengan memisahkan kontruksinya dan penjabaran
object tersebut)
3. Factory Method (Pembuatan Objet tanpa spesifikasi penjabaran class yang akan di buat)
4. Prototype ( Pembuatan object dengan mengkloning dari object yang telah ada)
5. Singleton ( Pembatasan pembuatan object dari suatu class)

* Structural Pattern
1. Adapter (Pattern ini Membolehkan class yang interfacenya tidak compatible untuk bekerja
bersama, dengan cara membungkusnya menjadi interface dari class yang telah ada)
2. Bridge ( Pattern ini Memisahkan abstraksi dari implementasinya sehingga dapat memberikan
variasi class secara independent)
3. Composite (Pattern ini Menggabungkan satu atau lebih object yang serupa sehingga dapat
dijadikan satu object)
4. Decorator (Pattern yang memberikan cara yang dinamis untuk menambahkan dan meng-
override prilaku dari method yang ada dalam sebuah object)
5. Facade (Pattern yang menyediakan interface sederhana yang akan di implementasikan dengan
coding yang besar)
6. Flyweight ( Pattern ini berupaya untuk mengurangi pembuatan dan manipulasi dari sejumlah
object besar yang serupa)
7. Proxy (Pattern yang menyediakan tempat untuk objek-object mengakases controll dari
aplikasi, dimana dapat mengurangi biaya dan mengurangi kompleksitas)

* Behavior Patterns
1. Chain of responsibility ( Pattern yang mendelegasikan perintah untuk rantai pengolahan objek
)
2. Command ( Menciptakan objects yang dikemas dengan beberapa pilihan/action dan parameter
)
3. Interpreter ( Pattern yang digunakan untuk spesifik bahasa )
4. Iterator ( Mengakses element dari object secara berurutan tanpa memaparkan representasinya
)
5. Mediator ( Memberikan pola untuk 'loose coupling' antara class dengan cara menjadikanya
satu kelas yang mempaparkan detail dari method).
6. Memento ( Tanpa melanggar konsep enkapsulasi. Merekam dan mengektrasi keadaaan
internal object dimana memungkinkan mengembalikan keadaannya ke semula nanti.)
7. Observer ( Mendefinisikan dependency one-to-many antara object, dimana perubahan terjadi
pada satu object yang nantinya akan mengenai object turunannya secara otomatis )
8. State ( Memungkinkan object untuk mengubah prilaku ketika terjadi perubahan internal.
9. Strategy (Menentukan sebuah keluarga algoritma, merangkumnya dan membuat mereka bisa
saling di pertukarkan. Pattern ini memberikan algoritma yang bervariasi secara independent
bisa digunakan)
10. Template Method ( Mendefinisikan kerangka operasi algoritma dalam sebuah abstract class.
Metode template ini memungkinkan subclass mendefinisikan langkah tertentu dari sebuah
algoritma tanpa mengubah struktur algoritma)
11. Visitor ( Memisahkan algoritma dari struktur object dengan memindahkan hirarki dari
methods ke dalam satu object)

Keuntungan dari Design Pattern adalah


1. Design yang berulang, lebih effisien dari hanya penggunaan code yang berulang.
2. Menangani permasalahan yang umum dihadapi oleh system designer.
3. Dengan menggunakan Design Pattern akan lebih mudah bagi orang lain memahami apa yang
anda lakukan dan mengapa.
4. Design Patter membantu anda untuk refactoring code anda dengan mudah
Hambatan-hambatan yang sering dijumpai dalam pengembangan perangkat lunak
tersebut antara lain.

 Kebutuhan yang akan datang sering tidak bisa dipahami dan merupakan sebuah hal yang
sering sekali berubah.
 Usaha untuk menggunakan kembali (reuse) sering kali berujung melibatkan komponen-
komponen yang sebenarnya tidak bisa digunakan kembali (not reusable) dan sering kali gagal
untuk dilakukan.
 Sering sekali terjadi, programer dan sistem analis kehilangan gambaran secara umum tentang
apa yang dimaksud dengan kebutuhan yang akan datang.
 Para pengembang cenderung melihat permasalahan ke arah permasalahan coding.
Pengembang gagal melihat bahwa penyelesaian masalah melalui kekuatan
perancangan/desain adalah sesuatu yang patut dipertimbangkan dan merupakan jalur yang
tepat.
1. Factory
Salah satu design pattern yang sering digunakan yaitu Factory Pattern. Dalam pattern ini,
sebuah class bertugas untuk membuat instance / object yang diinginkan. Coba ikuti contoh
di bawah ini:

2. SINGLETON
Ketika mendesain sebuah aplikasi, biasanya dibutuhkan sebuah object yang hanya boleh
ada satu kali dalam berjalannya proses tersebut. Singleton pattern akan membantu kita untuk
melakukan hal itu.

<?php
class Singleton
{
/**
* Returns the *Singleton* instance of this class.
*
* @staticvar Singleton $instance The *Singleton* instances of this class.
*
* @return Singleton The *Singleton* instance.
*/
public static function getInstance()
{
static $instance = null;
if (null === $instance) {
$instance = new static();
}

return $instance;
}

/**
* Protected constructor to prevent creating a new instance of the
* *Singleton* via the `new` operator from outside of this class.
*/
protected function __construct()
{
}

/**
* Private clone method to prevent cloning of the instance of the
* *Singleton* instance.
*
* @return void
*/
private function __clone()
{
}

/**
* Private unserialize method to prevent unserializing of the *Singleton*
* instance.
*
* @return void
*/
private function __wakeup()
{
}
}

class SingletonChild extends Singleton


{
}

$obj = Singleton::getInstance();
var_dump($obj === Singleton::getInstance()); // bool(true)

$anotherObj = SingletonChild::getInstance();
var_dump($anotherObj === Singleton::getInstance()); // bool(false)

var_dump($anotherObj === SingletonChild::getInstance()); // bool(true)

3. STRATEGY

Dengan strategy pattern, anda membungkus algoritma sejenis sehingga membuat class client
bertanggung jawab untuk membuat instance dari sebuah algoritma spesifik tanpa perlu tahu
implementasi sesungguhnya. Ada beberapa variasi strategy pattern, salah satunya yang paling
simpel yaitu:

Kode pertama menunjukkan keluarga algoritma; untuk serialize array, json, atau array of data:

<?php

interface OutputInterface
{
public function load();
}

class SerializedArrayOutput implements OutputInterface


{
public function load()
{
return serialize($arrayOfData);
}
}

class JsonStringOutput implements OutputInterface


{
public function load()
{
return json_encode($arrayOfData);
}
}

class ArrayOutput implements OutputInterface


{
public function load()
{
return $arrayOfData;
}
}

Potongan kode yang berikutnya menguraikan bagaimana kelas client memanggil mungkin
menggunakan salah satu algoritma ini dan bahkan lebih baik mengatur perilaku yang diperlukan
pada saat runtime:

<?php

class SomeClient
{
private $output;

public function setOutput(OutputInterface $outputType)


{
$this->output = $outputType;
}

public function loadOutput()


{
return $this->output->load();
}
}

Kelas klien panggilan di atas memiliki properti pribadi yang harus ditetapkan pada saat runtime
dan menjadi tipe 'OutputInterface' begitu properti ini disetel ke loadOutput () akan memanggil
metode load () pada kelas beton dari tipe output yang telah telah ditetapkanfront

<?php

$client = new SomeClient();

// Want an array?
$client->setOutput(new ArrayOutput());
$data = $client->loadOutput();
// Want some JSON?
$client->setOutput(new JsonStringOutput());
$data = $client->loadOutput();

Front Controller

Pola Controller depan adalah di mana Anda memiliki titik pintu masuk tunggal untuk aplikasi web Anda
(misalnya index.php) yang menangani semua permintaan. Kode ini bertanggung jawab untuk memuat semua
dependensi, memproses permintaan dan mengirim respon ke browser. Pola Controller depan dapat bermanfaat
karena mendorong kode modular dan memberikan Anda sebuah tempat sentral untuk menghubungkan dalam
kode yang harus dijalankan untuk setiap permintaan (seperti input sanitasi).

Model-View-Controller

Model-view-controller (MVC) pola dan kerabat HMVC dan MVVM memungkinkan Anda memecah kode ke
objek logis yang melayani tujuan yang sangat spesifik. Model berfungsi sebagai lapisan akses data dimana data
diambil dan dikembalikan dalam format yang dapat digunakan di seluruh aplikasi Anda. Controller menangani
permintaan, proses data kembali dari model dan pandangan beban untuk mengirimkan respon. Dan pandangan
tampilan template (markup, xml, dll) yang dikirim dalam penanggulangan browser web.

MVC adalah arsitektur paling sering dijumpai pada framework PHP modern PHP frameworks.

4. FUNGSI-FUNGSI CRUD PADA CSHARP DENGAN BASISDATA

CRUD merupakan singkatan dari Create, Read, Update dan Delete. Jadi ketika belajar
membuat CRUD artinya akan membuat 4 hal tersebut bersamaan dalam satu project.

CRUD terbatas dari 4 hal saja yaitu:

 Create (Membuat, contohnya membuat sistem pendaftaran / membuat data baru di


PHP yang dimasukkan ke database)
 Read (Membaca, menampilkan data yang ada didatabase dan dapat dibaca
menggunakan pemrograman PHP)
 Update (Memperbarui, artinya memperbarui atau mengedit data yang ada
didatabase via PHP)
 Delete (Menghapus, cara paling mudah dalam pembuatannya yaitu menghapus data
yang ada didatabase lewat PHP)

FUNGSI CRUD disini adalah digunakan untuk menambahkan data, menghapus data, serta mengupdate
data

Apa Bedanya CRUD & CMS ?


Masih ada beberapa orang yang salah mengartikan bahwa CRUD dan CMS merupakan hal
yang sama, padahal nyatanya berbeda. Karena CRUD hanya terdiri dari 4 hal tersebut
sedangkan CMS merupakan sistem pengelola konten yang artinya dapat mengelola secara
keseluruhan tanpa batas (misalnya WordPress & Joomla).

a) CONTOH PROGRAM

<?php include "atasadmin.php";?>

<?php

echo "<h2>Mata Pelajaran/Standar Kompetensi</h2>";

echo "<a href=mapel_tambah.php>Tambah Mata Pelajaran</a>";

include "../koneksi.php";

$ambil="select * from standar_kompetensi order by sk_kode asc";

$hasil=mysql_query($ambil);

//membuat nomor urut

$no=1;

echo "<table border=1 style=border-collapse:collapse cellpadding=3>";

echo "<tr align=center bgcolor=#66CCFF height=30>

<td>No</td><td>Kode Mapel</td>

<td>Kompetensi</td>

<td>Mata Pelajaran</td>

<td>Kelas</td>

<td>Proses</td></tr>";

//menampilkan data lebih dari satu

while ($data=mysql_fetch_array($hasil)){
echo "<tr><td>$no</td>

<td>$data[sk_kode]</td>

<td>$data[kompetensi_kode]</td>

<td>$data[sk_nama]</td>

<td>$data[sk_kelas]</td>

<td>

<a href=mapel_edit.php?edit=$data[sk_kode]>Edit</a>

<a href=mapel_hapus.php?hapus=$data[sk_kode]>Hapus</a>

</td></tr>";

$no++;

echo "</table>";

?>

<?php include "bawahadmin.php";?>

 Contoh READ

<?php
class MentryBukuKas extends CI_Model {
function bacadata(){
$baca = $this->db->get('entry_buku_kas');
if($baca->num_rows() > 0){
foreach ($baca->result() as $data){
$hasil[] = $data;
}
return $hasil;
}
}
function tambah(){
$no_bukti = $this->input->post('no_bukti');
$tgl_entry = $this->input->post('tgl_entry');
$nilai = $this->input->post('nilai');
$data = array(
'no_bukti'=>$no_bukti,
'tgl_entry'=>$tgl_entry,
'nilai'=>$nilai
);
$this->db->insert('entry_buku_kas',$data);
}
}
?>

 Contoh Create
 <?php include "atasadmin.php";?>

 <?php

 include "../koneksi.php";

 //ambil data kompetensi keahlian

 $ambil=mysql_query("SELECT * FROM kompetensi_keahlian");

 echo "<h2>Form Tambah Mata Pelajaran/Standar Kompetensi</h2>";

 echo "<form action='' method=post>";

 echo "<table>";

 echo "<tr><td>Kompetensi Keahlian</td><td><select name=kompetensi_kode>";

 while($data=mysql_fetch_array($ambil)){

 echo "<option value='$data[kompetensi_kode]'>$data[kompetensi_nama]</option>";

 }

 echo "</select></td></tr>";

 echo "<tr><td>Kode Mata Pelajaran</td><td><input type=text name=sk_kode></td></tr>";

 echo "<tr><td>Nama Mata Pelajaran</td><td><input type=text name=sk_nama


size=50></td></tr>";
 echo "<tr><td><Tingkat/Kelas></td><td>

 <select name=sk_kelas>

 <option value='Semua Tingkat'>Semua Tingkat</option>

 <option value='Kelas X'>Kelas X</option>

 <option value='Kelas XI'>Kelas XI</option>

 <option value='Kelas XII'>Kelas XII</option>

 </select>

 </td></tr>";

 echo "<tr><td></td><td><input type=submit name=proses value=PROSES></td></tr>";

 echo "</table>";

 echo "</form>";

 //proses form

 if(isset($_POST['proses'])){

 //buat variabel sesuai name yang ada pada form input

 $kompetensi_kode=$_POST['kompetensi_kode'];

 $sk_kode=$_POST['sk_kode'];

 $sk_nama=$_POST['sk_nama'];

 $sk_kelas=$_POST['sk_kelas'];

 $simpan="INSERT INTO standar_kompetensi (sk_kode, kompetensi_kode, sk_nama, sk_kelas)

 VALUES('$sk_kode','$kompetensi_kode','$sk_nama','$sk_kelas')";

 $hasil=mysql_query($simpan);
 if($hasil){

 echo "

 alert('Data berhasil disimpan.');location='mapel.php';

 ";

 }

 }

 ?>

 <?php include "bawahadmin.php";?>

 Contoh Update
 <?php include "atasadmin.php";?>

 <?php

 include "../koneksi.php";

 //ambil data standar kompetensi yang akan diedit

 $kode=$_GET['edit'];

 $pilih="select standar_kompetensi.*, kompetensi_keahlian.*

 from standar_kompetensi, kompetensi_keahlian

 WHERE standar_kompetensi.kompetensi_kode=kompetensi_keahlian.kompetensi_kode

 AND sk_kode='$kode'";
 $hasilpilih=mysql_query($pilih);

 $data2=mysql_fetch_array($hasilpilih);

 //ambil data kompetensi keahlian

 $ambil=mysql_query("SELECT * FROM kompetensi_keahlian

 WHERE kompetensi_kode!='$data2[kompetensi_kode]' ");

 echo "<h2>Form Edit Mata Pelajaran/Standar Kompetensi</h2>";

 echo "<form action='' method=post>";

 echo "<table>";

 echo "<tr><td>Kompetensi Keahlian</td><td><select name=kompetensi_kode>";

 echo "<option value='$data2[kompetensi_kode]'>$data[kompetensi_nama]</option>";

 while($data=mysql_fetch_array($ambil)){

 echo "<option value='$data[kompetensi_kode]'>$data[kompetensi_nama]</option>";

 }

 echo "</select></td></tr>";

 echo "<tr><td>Kode Mata Pelajaran</td>

 <td><input type=text name=sk_kode value='$data2[sk_kode]'></td></tr>";

 echo "<tr><td>Nama Kompetensi Keahlian</td>

 <td><input type=text name=sk_nama size=50 value='$data2[sk_nama]'></td></tr>";

 echo "<tr><td><Tingkat/Kelas></td><td>

 <select name=sk_kelas>

 <option value='Semua Tingkat'>Semua Tingkat</option>


 <option value='Kelas X'>Kelas X</option>

 <option value='Kelas XI'>Kelas XI</option>

 <option value='Kelas XII'>Kelas XII</option>

 </select>

 </td></tr>";

 echo "<tr><td></td><td><input type=submit name=proses value=PROSES></td></tr>";

 echo "</table>";

 echo "</form>";

 //proses form edit

 if(isset($_POST['proses'])){

 //buat variabel sesuai name yang ada pada form input

 $sk_kode=$_POST['sk_kode'];

 $kompetensi_kode=$_POST['kompetensi_kode'];

 $sk_nama=$_POST['sk_nama'];

 $sk_kelas=$_POST['sk_kelas'];

 $simpan="UPDATE standar_kompetensi SET


sk_kode='$sk_kode',kompetensi_kode='$kompetensi_kode',

 sk_nama='$sk_nama', sk_kelas='$sk_kelas' WHERE sk_kode='$kode' ";

 $hasil=mysql_query($simpan);

 if($hasil){

 echo "
 alert('Data berhasil disimpan.');location='mapel.php';

 ";

 }

 }

 ?>

 <?php include "bawahadmin.php";?>

 Delete
 <?php

 //hapus data

 include "../koneksi.php";

 $sk_kode=$_GET['hapus'];

 $hapus=mysql_query("DELETE FROM standar_kompetensi WHERE sk_kode='$sk_kode' ");

 if($hapus){

 echo "

 alert('Data berhasil dihapus.');

 location='mapel.php';

 ";

 }

 else{

 echo "Data GAGAL dihapus!";


 }

 ?>