Pemrograman Terstruktur dan Objek

Pemrograman Terstruktur
Pemrograman Terstruktur (Pemrograman Struktur, PS) adalah suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma. Prinsip dari pemrograman terstruktur adalah jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop). 
Contoh bahasa yang mendukung pemrograman terstruktur adalah C, Pascal, Delphi, Borland Delphi, Cobol Turbo Prolog, dll.

Pemrograman Objek
Pemrograman berorientasi objek (Object Oriented Programming, OOP) merupakan paradigma pemrograman 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.
Contoh bahasa yang mendukung pemrograma objek adalah C++, C#, Java, Python, dll.

Perbedaan Mendasar Antara OOP dan Pemrograman Terstruktur
  • OOP diorientasikan dalam bentuk objek-objek, sedangkan PS diuraikan menjadi lebih detail
  • OOP dikelompokkan ke dalam kelas, objek, abstraksi, enkapsulasi dan polimorfisme, sedangkan PS penulisan program memiliki struktur logika yang benar.
  • OOP tidak melihat bagaimana cara menyelesaikan masalah (terstruktur), tetapi objek-objek apa yang dapat melakukan pemecahan masalah tsb., sedangkan PS menggunakan tata cara yang teratur untuk mengoperasikan data struktur
Contoh Program dengan OOP dan Terstruktur

Pemrograman Terstruktur

#include<stdio.h>
#include<string.h>

void convert(int);
void revert(char[]);

int main(void){
int num;
char binary[100];
scanf("%d",&num);
convert(num);
scanf("%s",binary);
revert(binary);
}

void convert(int n){
int i=0;
char revbinary[100];
while(n>0){
if(n%2==1)
revbinary[i]='1';
else
revbinary[i]='0';
n=n/2;
i++;
}
revbinary[i]='\0';
strrev(revbinary);
printf("%s\n", revbinary);
}

void revert(char binary[100]){
int i,length=0,multi=1,num[100],total=0;
strrev(binary);
for(i=0;i<strlen(binary);i++){
if(binary[i]=='1')
num[i]=multi;
else if(binary[i]=='0')
num[i]=0;
multi=multi*2;
length++;
}
for(i=0;i<length;i++){
total=total+num[i];
}
printf("%d\n",total);

}

OOP

#include <cstdio>
#include <cstdlib>
#include <string>
#include <iostream>

using namespace std;

class Monster{
private:
int HP;
string nama;
public:
Monster(){
this->HP = 100;
this->nama = "Tanpa Nama";
}
Monster(int HP, string nama){
if(HP>=0){
this->HP = HP;
}
else{
this->HP = 100;
}

this->nama = nama;
}
~Monster(){
cout << this->nama << " mati" << endl;
}
void SetHP(int HP){
if(HP>=0){
this->HP = HP;
}
else{
this->HP = 100;
}
}
int GetHP(){
return this->HP;
}
void SetName(string nama){
this->nama = nama;
}
string GetName(){
return this->nama;
}
void Attack(Monster *musuh, int dmg){
musuh->Terserang(dmg);
}
void Terserang(int dmg){
this->HP -= dmg;
}
};

/*
void Monster::Monster(int HP){
if(HP>=0){
this->HP = HP
}
else{
this->HP = 100;
}
}*/

void Dunia(Monster *monster1, Monster *monster2){
monster1->Attack(monster2, 5);
cout << monster2->GetName() << " HP: " << monster2->GetHP() << endl;
}

int main(){
Monster *zombie = new Monster(10, "Zombie man");
Monster *vampire = new Monster();

cout << "Zombie HP: " << zombie->GetHP() << endl;
cout << "Vampire HP: " << vampire->GetHP() << endl;

Dunia(zombie, vampire);

zombie->~Monster();
vampire->~Monster();

}

Comments