Selasa, 08 Oktober 2013

Tugas Struktur Data dan Algoritma

Object Oriented Programming dengan C#
Unduh disini

Object Oriented programming (OOP) dalam C#

OOP(Object Oriented programming) dalam C#

1.    Class, Atribut, Method
Class  adalah  struktur data yang bisa kita gunakan untuk mendefinisikan objek yang menyimpan data bersama-sama nilai-nilai dan perilaku (behavior). Kelas adalah suatu entitas yang merupakan bentuk program dari suatu abstraksi untuk permasalahan dunia nyata, dan instans dari class merupkan realisasi dari beberapa objek. Jika dianalogikan, kelas itu merupakan blueprint ( cetak biru ) dari sebuah objek (instans).
     Dalam Python, pendeklarasian class punya kesamaan seperti mendeklarasikan sebuah fungsi. Berikut adalah bentuk umum pendeklarasian sebuah kelas,
                        
class <nama_kelas> :
              <statemen>
              <statemen>

            Pendeklarasian kelas di awali dengan kata kunci class kemudian diikuti dengan nama kelasnya. Statemen-statemen dalam tubuh kelas dapat berupa atribut kelas dan method. Kelas umumnya di definisikan pada level teratas dari sebuah modul, dengan begitu objek dari kelas dapat di dibuat dimanapun dalam source code dimana kelas tersebut didefinisikan.

Atribut merupakan data atau bisa juga berupa fungsi-fungsi yang dimiliki oleh kelas tersebut. Atribut diakses melalui notasi bertitik. Atribut-atribut kelas terikat hanya untuk kelas-kelas dimana atribut tersebut didefinisikan. Atribut-atribut data merupakan veriabel-variabel yang kita deklarasikan. Variabel-variabel tersebut dapat digunakan seperti variabel lainnya dan dapat di ubah-ubah nilainya oleh method didalam kelas ataupun di dalam program utama.
Contoh penggunaan Atribut Kelas,

                                    >>> class X:
              ...     bil = 100
              ...
              >>> print X.bil
              100
              >>> X.bil = X.bil + 10
              >>> print X.bil
              110
Method  atau function atau fungsi merupakan representasi dari perilaku object. Istilah method lebih umum dikenal pada bahasa pemrograman Java, sedangkan pada c# lebih dikenal dengan istilah fungsi. Baik Method maupun Fungsi mempunyai maksud yang sama. Jika mengambil contoh object di dunia nyata, misalnya studi kasus pada motor. Motor mempunyai beberapa fungsi yang dapat dijalankan seperti berjalan, mengerem, dan berbunyi (klakson). Perilaku ini dapat direpresentasikan dalam fungsi misalnya run(), brake(), dan horn().
Pada umumnya setiap fungsi mempunyai jenis kembalian atau return type dari hasil eksekusi fungsinya. Sebagai contoh diambil fungsi run() akan menghasilkan motor dalam kondisi berjalan, fungsi break() menghasilkan motor akan berhenti dan fungsi horn() menghasilkan bunyi klakson. Selain itu, sifat fungsi ada yang dapat diakses atau dipicu dari luar atau hanya bisa dipicu oleh object itu sendiri.
Contoh :
using System.Text;

namespace tugas2
{
    class Program
    {
        class pembagian
        {
            private double a;
            public double b;
            public void nilai1()
            {
                Console.Write("Masukan Nilai 1 : ");
                a = Convert.ToInt32(Console.ReadLine());
                Console.Write("Masukan Nilai 2 : ");
                b = Convert.ToInt32(Console.ReadLine());
            }
            private void tes()
            {
                Console.WriteLine("di coba");
            }
            public void hasil1(int c)
            {
                Console.Write("Hasilnya = {0} ", a / b);
            }
            static void Main(string[] args)
            {
                pembagian n = new pembagian();
                n.nilai1();
                n.hasil1(0);

                Console.ReadKey();
            }
        }
    }
}

2.    Object
Object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. Dalam term OOP, object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama.
3.     Cara membuat Object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut. String str = new String(); Random r = new Random(); Pegawai p2 = new Pegawai(); Date hari = new Date();

4.    Konstruktor
Konstruktor merupakan sebuah method yang akan otomatis dipanggil ketika objek di instantiasi. Constructor umumnya digunakan untuk melakukan inisialisasi terhadap suatu variabel atau method. Bentuk umum Method constructor adalah sebagai berikut,
                             class <nama_kelas>:
               def __init__(self, <argumen-argumen>):
                    <statemen>
                    <statemen>


    Contoh Program :

          class Konstruktor:
          def __init__(self):
          print 'Kalimat ini akan langsung di cetak\n
                    Ketika objek dibuat'
         
          # program utama
          objekKonst = Konstruktor()
5.    Private, protected, public
Pengertian :
·        public: anggota pribadi dari kelas dasar hanya dapat diakses oleh anggota yang kelas dasar.
·        private: anggota publik dari kelas dasar dapat diakses oleh anggota yang kelas dasar,anggota kelas turunan serta anggota yang berada di luar kelas dasar dan kelas turunan.
·        protected: anggota dilindungi dari kelas dasar dapat diakses oleh anggota kelas dasarserta anggota kelas turunan.
Perbedaan public, private, protected, dan tanpa penentu akses pada variabel : 
·        public : variabel dapat di akses pada semua kelas yang menggunakan kelas yang berisi variabel tersebut.
·        private : Hanya dapat diakses oleh metode2 dalam kelas itu sendiri.
·        protected : Variabel instan dapat diakses pada kelas sendiri dan subkelasnya.
·        Tanpa Penentu akses : variabel dapat diakses oleh kelas yang berada dalam package yang sama.

Perbedaan public, private, protected, dan tanpa penentu akses pada metode : 
·        private : Hanya dapat diakses pada metode2 dalam kelas yang sama.
·        protected : Metode dapat diakses pada kelas sendiri dan pada subkelasnya.
·        Tanpa Penentu akses : Metode hanya dapat diakses oleh metode dalam kelas itu sendiri ataupun metode pada kelas lain yang terletak pada package yang sama.

6.     Karakteristik OOP
                  
.Inheritance (Pewarisan)
Pewarisan merupakan konsep dalam pemrograman berbasis objek yang memungkinkan  untuk membuat suatu kelas dengan didasarkan pada kelas yang sudah ada sehingga mewarisi semua method dan atributnya. Pewarisan merupakan suatu mekanisme yang memungkinkan seorang pemrogram menciptakan suatu kelas baru berdasarkan kelas yang sudah tersedia tetapi tidak perlu  menuliskan kode dari nol. Dengan cara seperti ini, semua method dan atribut yang terdapat pada kelas induk diturunkan ke kelas turunannya. Namun kelas turunannya dapat menambah method baru atau atribut baru tersendiri.

Bentuk Umum pembuatan Kelas turunan,

                             class <nama_kelas_turunan>(<nama_kelas_induk>):
               <atribut-atribut>
               <method-method>


             Contoh program :
                            
                             class Ayah:
               def methodAyah(self):
                    print "Ini adalah Method Ayah"


          class Anak(Ayah):
               def methodAnak(self):
                    print "Ini adalah Method Anak"


          #deklarasi objek kelas Ayah
          p = Ayah()
          p.methodAyah()

          #deklarasi objek kelas anak
          c = Anak()
          c.methodAnak()
          c.methodAyah()

    Output :

          Ini adalah Method Ayah
          Ini adalah Method Anak
          Ini adalah Method Ayah

Polymorphism
Polymorphism adalah suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh dalm C# :

           
    class Pengurangan
    {
        public int kurang(int a, int b)
        {
            Console.WriteLine("Contoh Pengurangan 2 Bilangan");
            Console.WriteLine("Hasil dari {0} - {1} = {2}",a,b,(a-b));
            return a-b;
        }
        public int kurang(int a, int b , int c)
        {
            Console.WriteLine("Contoh Pengurangan 3 Bilangan");
            Console.WriteLine("Hasil dari {0} - {1} - {2} = {3}",a,b,c,(a-b-c));
            return a-b-c;
        }
        public double kurang(double e,int b)
        {
            Console.WriteLine("Contoh Pengurangan Dengan type berbeda");
            Console.WriteLine("Hasil dari {0} - {1} = {2}",e,b,(e-b));
            return e-b;
        }
    }
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Polimorphism\n");
            Penjumlahan imam=new Penjumlahan();
            imam.tambah(10,10);
            imam.tambah(10,10,10);
            imam.tambah(11.1,10);

            imamoto.kurang(10,5,2);
            imamoto.kurang(10.10,5);
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
} Pengurangan imamoto=new Pengurangan();
            imamoto.kurang(10,5); using System;
namespace polymorph
{
    class Penjumlahan
    {
        public int tambah(int a,int b)
        {
            Console.WriteLine("Contoh Penjumlahan 2 Bilangan");
            Console.WriteLine("Hasil dari {0} + {1} = {2}",a,b,(a+b));
            return a+b;
        }
        public int tambah(int a, int b, int c)
        {
            Console.WriteLine("Contoh Penjumlahan 3 Bilangan");
            Console.WriteLine("Hasil dari {0} + {1} + {2} = {3}",a,b,c,(a+b+c));
            return a+b+c;
        }
        public double tambah(double d, int b)
        {
            Console.WriteLine("Contoh Penjumlahan dengan type berbeda");
            Console.WriteLine("Hasil dari {0} + {1} = {2}\n",d,b,(d+b));
            return d+b;
        }
    }


Hasilnya :
Description: http://imamoto17.files.wordpress.com/2013/04/polymorphism1.png

Encapsulation
Encapsulation adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh program :
using System;
 
namespace oop_encapsulation
{
    class enkapsulasi{
    public String Nama;
    public String NIM;
    private int nilaiku;
    public void setNilai(int nilai){
        nilaiku=nilai;
    }
    public int getNilai(){
        return nilaiku;
    }
}
     class Program
     {
            public static void Main(string[]args)
            {
                 enkapsulasi Biodata = new enkapsulasi();
                        Biodata.Nama = "Imamoto";
                        Biodata.NIM = "1111100740";
                        Biodata.setNilai(100);
                        Console.WriteLine("Nama  = "+ Biodata.Nama);
                        Console.WriteLine("NIM   = "+ Biodata.NIM);
                        Console.WriteLine("Nilai = "+ Biodata.getNilai());
                        Console.ReadKey();
}
}
}
Hasilnya :
Description: http://imamoto17.files.wordpress.com/2013/04/encapsulation1.png
   Abstraction
   Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem. Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction.

   Aggregation
Aggregation  adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects mesin, object pisau dan lain-lain. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat.

7.     Over loading
Overloading adalah dua atau lebih method di dalam satu kelas yang sama, dengan nama yang sama, namun dengan deklarasi parameter yang membedakan.
syarat untuk membuat method Overloading adalah :
1.jumlah tipe dalam parameter nya harus berbeda.
2.tipe di parameter harus berbeda.
3.urutan tipe di dalam parameter harus berbeda.
            Contoh program :
using System;

namespace overloading1
{
    class Program
    {
        private static void perkalian(int a, int b, int c){
            Console.WriteLine("perkalian 3 tipe dalam parameter");
            int x=0;
            x = Convert.ToInt32(a*b*c);
            Console.WriteLine("{0} = {1} * {2} * {3} ",x,a,b,c);

        }
        private static void perkalian(int a, int b){
            Console.WriteLine("perkalian 2 tipe dalam parameter");
            int x=0;
            x = Convert.ToInt32(a*b);
            Console.WriteLine("{0} = {1} * {2}",x,a,b);
        }
        public static void Main(string[] args)
        {
            Console.WriteLine("contoh overloading method dengan nama method perkalian");
            Console.WriteLine();
            perkalian(3,4);
            Console.WriteLine();
            perkalian(3,4,5);
            Console.ReadKey(true);
        }
    }
}

8.    Konversi Nilai
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        private double _uas;
        private double _uts;
        private double _tugas;
        private double _part;
        private double _akhir;
        private string _huruf;

        public double nilaiUas
        {
            get { return _uas; }
            set { _uas = value; }
        }
        public double nilaiUts
        {
            get { return _uts; }
            set { _uts = value; }
        }
        public double nilaiPartisipasi
        {
            get { return _part; }
            set { _part = value; }
        }
        public double nilaiTugas
        {
            get { return _tugas; }
            set { _tugas = value; }
        }

        public double HitungNilaiAkhir(double ntgs, double nprtsps, double nuas,double nuts)
       {
            return 0.2 * ntgs + 0.3 * nprtsps + 0.3 * nuas + 0.2 * nuts;
        }
        public string konversiHuruf(double na)
        {
            string nh = "";
if (na > 85 && na <= 100)
            {
                nh = "A";

            }
if (na > 80 && na <= 85)
            {
                nh = "A-";
            }
if (na > 75 && na <= 80)
            {
                nh = "B+";
            }
if (na > 70 && na <= 75)
            {
                nh = "B";
            }
if (na > 65 && na <= 70)
            {
                nh = "B-";
            }
if (na > 60 && na <= 65)
            {
                nh = "C+";
            }
if (na > 55 && na <= 60)
            {
                nh = "C";
            }
if (na > 50 && na <= 55)
            {
                nh = "C-";
            }
if (na > 40 && na <= 50)
            {
                nh = "D";
            }
if (na <= 40)
            {
                nh = "E";
            }
return nh;
        }
        public  void tampilkan()
        {
              {
Console.WriteLine("***********************************************");
Console.WriteLine("Menghitung Nilai Akhir Mata Kuliah");
Console.WriteLine("***********************************************");
Console.Write("nilai tugas    = ");
            _tugas = double.Parse(Console.ReadLine());
Console.Write("nilai part     = ");
            _part = double.Parse(Console.ReadLine());
Console.Write("nilai UTS      = ");
            _uts = double.Parse(Console.ReadLine());
Console.Write("nilai UAS      = ");
            _uas = double.Parse(Console.ReadLine());
        Console.WriteLine("****************************************************");
            _akhir = HitungNilaiAkhir(_tugas, _part, _uas, _uts);
Console.Write("nilai akhir  = " + _akhir);
Console.WriteLine();
Console.WriteLine("*************************************************");
            _huruf = konversiHuruf(_akhir);
Console.Write("nilai huruf  = " + _huruf);

        }

    }
classProgram
        static void Main(string[] args)
        {
                  {
// membuat objek
mahasiswa m1 = newmahasiswa();
            m1.tampilkan();

Console.ReadKey();
        }
    }
}