REKAYASA PERANGKAT LUNAK (RPL) Implementasi PL
Pendahuluan Relevansi Perkuliahan – Akankah kita bisa menikmati gedung/rumah dari sebuah gambar rancangan tanpa membangunnya ? – Implementasi PL adalah satu-satunya jalan agar PL yang sudah dirancang dengan baik dapat digunakan
Tujuan Instruksional Khusus Mahasiswa akan dapat menjabarkan bagaimana mentransformasikan hasil perancangan PL ke dalam bahasa pemrograman tingkat tinggi
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
2/18
Agenda Pembahasan Pengertian dan Metode Bahasa Object Oriented Programming - OOP OOP : C++ OOP : Java Implementasi Perancangan
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
3/18
Pengertian, Metode Implementasi hasil dari perancangan ke dalam kode (coding) sesuai dengan sintaks dari bahasa pemrograman yang digunakan Metode : – Pemrograman terstruktur (Structured Programming SP) – Pemrograman berorientasi objek (Object Oriented Programming - OOP)
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
4/18
Bahasa Structured Programming : –C – Pascal – Basic, dll.
Object Oriented Programming : – C++ – Java – Smalltalk, dll.
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
5/18
Object Oriented Programming Enkapsulasi (encapsulation) – abstraksi data dan fungsi – direpresentasikan dalam sebuah klas : atribut dan operasi
Penyembunyian Informasi (information hiding) – pengaturan akses terhadap anggota klas (atribut dan operasi) dari sebuah klas maupun klas itu sendiri – public, private, protected dan friend
Pewarisan (inheritance) – – –
penurunan karakteristik dan perilaku sebuah klas klas turunan (derived class/sub class) klas induk/dasar (super class)
Polimorfisme (polymorphism) – sebuah operasi/antar muka yang memiliki banyak bentuk implementasi – nama sama, tetapi tipe atau jumlah argumen berbeda Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
6/18
Object Oriented Programming : C++ Class/Object – sifat akses anggota klas (atribut & operasi) : private (klas ybs.), protected (klas ybs. dan turunannya), public (semua klas) dan friend (klas tertentu yg diberi hak) – memiliki konstruktor dan destruktor class Sensor { friend class Display; public: enum OperatingState {Off, StandBy, Monitor}; // Create a Sensor Sensor (); // Destructor ~Sensor (); int ConvertTo (float theScale, float theBias, char* unitsOfMeasure); int AddressOf (); OperatingState StateOf (); void WaitForMonitor (); // Initialize and Monitor the Sensor int Initialize (int theInitSequence); void MonitorForAlarmCondition (); ……
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
7/18
Object Oriented Programming : C++ Class/Object (lanjutan) protected: // Attribute for Sensor – accessible only to derived classes char* ModelNumber; char* Manufacturer; int InitSequence; float Interval; int Address; OperatingState State; float Threshold; float Value; …… private: // Class variable identifying object type static char* theObjectType = “Sensor”; float Sample(); int SetModelNumber (char* aModelNumber); int SetManufacturer (char* aManufacturer); …… }; // Declaration of object Sensor IntruderSensor;
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
8/18
Object Oriented Programming : C++ Generalization – Specialization – mendukung single dan multiple inheritance – klas turunan dpt dideklarasikan sbg. public (semua anggota klas dasarnya dibuat public di klas turunannya) atau private (semua anggota klas dasarnya dibuat private di klas turunannya) class CriticalSensor : public Sensor { public: // Create and destroy a CriticalSensor CriticalSensor (); CriticalSensor (const CriticalSensor& aSensor, int theAddress); ~CriticalSensor (); // Access float ToleranceOf (); void MonitorForAlarmCondition (); protected: float Tolerance; private:
int SetTolerance (float theTolerance); ……
};
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
9/18
Object Oriented Programming : C++ Aggregation – mendukung pendefinisian klas dalam klas class Sensor { public: Building protected: Building };
BuildingAttachedTo (); AssociatedBuilding;
Attribute, Service : member – –
sifat akses : private, protected, public dan friend atribut dpt dideklarasikan sbg. static (satu instansiasi untuk semua objek dari klas ybs.) – konstruktor dan destruktor harus memiliki nama yg sama dengan nama klasnya, destruktor diawali dengan tanda tilde (~)
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
10/18
Object Oriented Programming : C++ Attribute, Service : member (lanjutan) void Sensor::MonitorForAlarmCondition (); { float SensorReading = 0.0; AlarmDevice* WarningAlarmDevice = NULL; AlarmEvent* WarningAlarmEvent = NULL; // Precondition State = StandBy if (StateOf () != StandBy) ReportError (“Invalid State”); else { this.WaitForMonitor (); // trigger on State = Monitor while (StateOf () == Monitor) { delay (Interval); …… } }; delete WarningAlarmDevice; delete WarningAlarmEvent; };
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
11/18
Object Oriented Programming : Java Class/Object – sifat akses anggota klas (atribut & operasi) : private (klas ybs.), protected (klas ybs. dan turunannya) dan public (semua klas) – memiliki konstruktor dan tidak ada destruktor public class Sensor { // Create a Sensor public Sensor () { // kode di sini } public int ConvertTo (float theScale, float theBias, String unitsOfMeasure) { // kode di sini } public int AddressOf () { // kode di sini } public OperatingState StateOf () { // kode di sini } public void WaitForMonitor () { // kode di sini } // Initialize and Monitor the Sensor public int Initialize (int theInitSequence); public void MonitorForAlarmCondition (); ……
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
12/18
Object Oriented Programming : Java Class/Object (lanjutan) // Attribute for Sensor – accessible only to derived classes protected String ModelNumber; protected String Manufacturer; protected int InitSequence; protected float Interval; protected int Address; protected OperatingState State; protected float Threshold; protected float Value; …… // Class variable identifying object type private static String theObjectType = “Sensor”; // Attribute for Sensor – accessible only to this classes private float Sample(); private int SetModelNumber (String aModelNumber); private int SetManufacturer (String aManufacturer); …… }; // Object instantiation Sensor IntruderSensor = new Sensor ();
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
13/18
Object Oriented Programming : Java Generalization – Specialization – mendukung single inheritance saja – menggunakan istilah ‘extends’ untuk mewarisi, dan ‘super’ untuk menunjuk ke klas induknya – klas turunan akan mendapatkan akses atribut dan operasi dari klas induk yang bukan private public class CriticalSensor extends Sensor { // Create a CriticalSensor public CriticalSensor () { // kode di sini } // Access public float ToleranceOf () { // kode di sini ) public void MonitorForAlarmCondition () { // kode di sini ) protected float Tolerance; private int ……
SetTolerance (float theTolerance) { // kode di sini )
};
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
14/18
Object Oriented Programming : Java Aggregation – mendukung pendefinisian klas dalam klas public class Sensor { public Building
BuildingAttachedTo ();
protected Building AssociatedBuilding; };
Attribute, Service – –
sifat akses : private, protected dan public atribut dpt dideklarasikan sbg. static (satu instansiasi untuk semua objek dari klas ybs.) – tidak ada destruktor – deklarasi dan definisi operasi harus dalam satu klas yang sama Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
15/18
Object Oriented Programming : Java Attribute, Service (lanjutan) public class Sensor { private staticString theObjectType = “Sensor”; // Create a Sensor public Sensor () { } …… public void MonitorForAlarmCondition () { float SensorReading = 0.0; AlarmDevice WarningAlarmDevice = NULL; AlarmEvent WarningAlarmEvent = NULL; // Precondition State = StandBy if (StateOf () != StandBy) ReportError (“Invalid State”); else { // kode di sini } // kode di sini } …… }
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
16/18
Implementasi Perancangan (1) Pemrograman Terstruktur
/* File MonitorSensorsExecutive.c */ # include MonitorSensorsExecutive.h; void ResetSensor (int IDSensor); /* File MonitorSensorsExecutive.h */ void ResetAlarm (int IDAlarm); # include …… …… void ResetSensor (int IDSensor); void ResetAlarm (int IDAlarm); ……
Monitor sensors executive
Acquire response info
Read sensors
Establish alarm conditions
Produce display
Alarm output controller
Generate alarm signal
Set up conn. to phone net
Generate pulses to line
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
17/18
Implementasi Perancangan (2) Pemrograman Berorientasi Objek
VehicleOTS VIN
public class VehicleOTS { privateString VIN; public VehicleOTS () { }
validateVIN()
Vehicle color style year make
public void validateVIN (String theVIN) { // kode di sini } } public class Vehicle extends VehicleOTS { privateString color; privateString style; privateDate year; privateString make; public Vehicle () { } }
Bahan Kuliah RPL - Implementasi PL / Tri Astoto K.,ST.MT
18/18