Minggu, 21 April 2013

Design Pattern Prototype dengan bahasa pemrograman CSharp

Ada banyak situasi dalam aplikasi kita di mana kita ingin mengambil salinan obyek dari konteks dan kemudian dilanjutkan dengan salinan beberapa set independen operasi. Pola prototipe secara khusus berguna dalam skenario dimana kita dapat hanya menyalin objek dari konteks aplikasi saat ini dan kemudian lanjutkan ke independen dari objek asli.


Dalam diagram di atas para pemain utama yang terlibat adalah:

Prototype : Ini adalah sebuah antarmuka atau kelas abstrak yang mendefinisikan metode untuk mengkloning dirinya sendiri.
ConcretePrototype : ini adalah kelas beton yang akan mengkloning dirinya sendiri.
Client : Obyek aplikasi yang membutuhkan salinan kloning dari objek.
Mari kita mencoba untuk melihat bagaimana kita dapat menerapkan pola ini dalam C #.
class Program
    {
        static void Main(string[] args)
        {
            // The code to demonstrate the classic Prorotype Pattern
            CJ player = new CJ();
            player.Health = 1;
            player.Felony = 10;
            player.Money = 2.0;

            Console.WriteLine("Original Player stats:");
            Console.WriteLine("Health: {0}, Felony: {1}, Money: {2}", 
                player.Health.ToString(), 
                player.Felony.ToString(), 
                player.Money.ToString());

            // We enter the cheat code here and we have a new 
            // player with his health fully restored.
            CJ playerToSave = player.Clone() as CJ;            

            Console.WriteLine("\nCopy of player to save on disk:");
            Console.WriteLine("Health: {0}, Felony: {1}, Money: {2}", 
                playerToSave.Health.ToString(), 
                playerToSave.Felony.ToString(), 
                playerToSave.Money.ToString());

            PerformShallowCopy();
            PerformDeepCopy();
            ICloneableVersionCopy();
            Console.ReadKey(true);

        }

        private static void PerformShallowCopy()
        {
            // The code to demonstrate the shallow copy
            CJEx playerEx = new CJEx();
            playerEx.Health = 1;
            playerEx.Felony = 10;
            playerEx.Money = 2.0;
            playerEx.Details.Fitness = 5;
            playerEx.Details.Charisma = 5;

            // Lets clone the above object and change the 
            // proprties of contained object
            CJEx shallowClonedPlayer = playerEx.Clone() as CJEx;
            shallowClonedPlayer.Details.Charisma = 10;
            shallowClonedPlayer.Details.Fitness = 10;

            // Lets see what happened to the original object
            Console.WriteLine("\nOriginal Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                playerEx.Details.Charisma.ToString(),
                playerEx.Details.Fitness.ToString());
            Console.WriteLine("\nShallow Cloned Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                shallowClonedPlayer.Details.Charisma.ToString(),
                shallowClonedPlayer.Details.Fitness.ToString());
        }

        private static void PerformDeepCopy()
        {
            // Let us see how we can perform the deep copy now
            CJEx playerEx2 = new CJEx();
            playerEx2.Health = 1;
            playerEx2.Felony = 10;
            playerEx2.Money = 2.0;
            playerEx2.Details.Fitness = 5;
            playerEx2.Details.Charisma = 5;

            // lets clone the object but this time perform a deep copy
            CJEx shallowClonedPlayer2 = playerEx2.Clone() as CJEx;
            shallowClonedPlayer2.Details.Charisma = 10;
            shallowClonedPlayer2.Details.Fitness = 10;

            // Lets see what happened to the original object
            Console.WriteLine("\nOriginal Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                playerEx2.Details.Charisma.ToString(),
                playerEx2.Details.Fitness.ToString());
            Console.WriteLine("\nDeep Cloned Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                shallowClonedPlayer2.Details.Charisma.ToString(),
                shallowClonedPlayer2.Details.Fitness.ToString());
        }

        private static void ICloneableVersionCopy()
        {
            // Let us see how we can perform the deep copy now
            CJFinal player = new CJFinal();
            player.Health = 1;
            player.Felony = 10;
            player.Money = 2.0;
            player.Details.Fitness = 5;
            player.Details.Charisma = 5;

            // lets clone the object but this time perform a deep copy
            CJFinal clonedPlayer = player.Clone() as CJFinal;
            clonedPlayer.Details.Charisma = 10;
            clonedPlayer.Details.Fitness = 10;

            // Lets see what happened to the original object
            Console.WriteLine("\nOriginal Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                player.Details.Charisma.ToString(),
                player.Details.Fitness.ToString());
            Console.WriteLine("\nICloneable Deep Cloned Object:");
            Console.WriteLine("Charisma: {0}, Fitness: {1}",
                clonedPlayer.Details.Charisma.ToString(),
                clonedPlayer.Details.Fitness.ToString());
        }
    }
}


sumber : CodeProject.com

Jumat, 12 April 2013

Design Pattern Abstract Factory dengan bahasa pemrograman CSharp

langsung saja penjelasan dari Abstract Factory Pattern : 
 

Abstrak Factory Pettern di berguna ketika klien perlu membuat objek yang saling berkaitan. Jika kita perlu menciptakan keluarga obyek terkait atau tergantung, maka kita dapat menggunakan Abstrak Factory Pettern. Pettern ini sangat berguna ketika klien tidak tahu persis apa jenis untuk menciptakan. Sebagai contoh, katakanlah Showroom khusus menjual ponsel mendapat permintaan untuk ponsel pintar buatan Samsung. Di sini kita tidak tahu dengan tepat jenis objek yang akan dibuat (dengan asumsi semua informasi untuk telepon dibungkus dalam bentuk benda konkret). Tapi kita tahu bahwa kita sedang mencari ponsel pintar yang diproduksi oleh Samsung. Informasi ini sebenarnya dapat dimanfaatkan jika desain kami memiliki implementasi Abstrak Factory. Jadi dengan ide Abstract Factory Pettern Abstrak, sekarang kita akan mencoba untuk membuat sebuah desain yang akan memfasilitasi penciptaan obyek terkait. Kami akan pergi ke depan dan menulis sebuah aplikasi sederhana untuk skenario baru saja kita bicarakan.

berikut adalah contoh program menggunakan bahasa pemrograman CSharp (C#) :


using System;

using System.Collections.Generic;

using System.Text;



namespace AbstractFactoryDemo

{

    class Program

    {

        static void Main(string[] args)

        {

            PhoneTypeChecker checker = new PhoneTypeChecker(MANUFACTURERS.SAMSUNG);



            checker.CheckProducts();



            Console.ReadLine();



            checker = new PhoneTypeChecker(MANUFACTURERS.HTC);



            checker.CheckProducts();

            Console.ReadLine();



            checker = new PhoneTypeChecker(MANUFACTURERS.NOKIA);



            checker.CheckProducts();

            Console.Read();

        }

    }





    interface IPhoneFactory

    {

        ISmart GetSmart();

        IDumb GetDumb();

    }



    class SamsungFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new GalaxyS2();

        }



        public IDumb GetDumb()

        {

            return new Primo();

        }

    }



    class HTCFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new Titan();

        }



        public IDumb GetDumb()

        {

            return new Genie();

        }

    }



    class NokiaFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new Lumia();

        }



        public IDumb GetDumb()

        {

            return new Asha();

        }

    }



    class Lumia : ISmart

    {

        public string Name()

        {

            return "Lumia";

        }

    }



    class Asha : IDumb

    {

        public string Name()

        {

            return "Asha";

        }

    }



    interface ISmart

    {

        string Name();

    }



    class GalaxyS2 : ISmart

    {

        public string Name()

        {

            return "GalaxyS2";

        }

    }



    class Primo : IDumb

    {

        public string Name()

        {

            return "Blue";

        }

    }



    interface IDumb

    {

        string Name();

    }



    class Titan : ISmart

    {

        public string Name()

        {

            return "Titan";

        }

    }



    class Genie : IDumb

    {

        public string Name()

        {

            return "Genie";

        }

    }



    enum MANUFACTURERS

    {

        SAMSUNG,

        HTC,

        NOKIA

    }

    class PhoneTypeChecker

    {

    

        IPhoneFactory factory;

        MANUFACTURERS manu;



        public PhoneTypeChecker(MANUFACTURERS m)

        {

            manu = m;

        }



        public void CheckProducts()

        {

            switch (manu)

            {

                case MANUFACTURERS.SAMSUNG:

                    factory = new SamsungFactory();

                    break;

                case MANUFACTURERS.HTC:

                    factory = new HTCFactory();

                    break;

                case MANUFACTURERS.NOKIA:

                    factory = new NokiaFactory();

                    break;

            }



            Console.WriteLine(manu.ToString() + ":\nSmart Phone: " + factory.GetSmart().Name() + "\nDumb Phone: " + factory.GetDumb().Name());

        }

    }

}

Design Pattern Factory Method dengan bahasa pemrograman CSharp

Setelah beberapa waktu mencari referensi di internet akhirnya nemu juga metode - metode yang di gunakan dalam postingan kali ini yaitu Design Pettern Factory Method.
Tanpa panjang lebar langsung saja penjelasan tentang Factory Method :


Ada banyak skenario saat kelas perlu menciptakan beberapa objek.
Kelas dapat melakukannya dengan bebas tetapi harus tahu tentang masing-masing dan setiap kelas.
Ide factory method adalah memiliki kemampuan kelas untuk menciptakan kelas-kelas lain tanpa mereka tahu tentang semua kemungkinan kelas yang ada.
Ini memberi kita diperpanjang, Dengan factory method kita mendapatkan kemungkinan untuk menciptakan, memelihara dan memanipulasi koleksi benda-benda yang berbeda yang memiliki beberapa karakteristik umum.
Penggunaan utama dari method ini adalah kelas yang mengelola banyak benda seperti Document Manager, manajer Control, Facility Manager.

berikut adalah contoh program dengan menggunakan bahasa pemrograman CSharp (C#) :


using System;

using System.Collections.Generic;

using System.Text;



namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            AEmployee man = new Manager();

            Console.WriteLine("Recievables for " + man.ToString() + ": \n");

            man.PrintBenefits();



            Console.ReadLine();



            man = new Engineer();

            Console.WriteLine("Recievables for " + man.ToString() + ": \n");

            man.PrintBenefits();



            Console.ReadLine();

        }

    }



    abstract class AItems

    {

        //This is just to facilitate testing of our application.

        public override string ToString()

        {

            return this.GetType().Name;

        }

    }



    class Car : AItems { }



    class CellPhone : AItems    { }



    class Computer : AItems    {    }



    class LapTop : AItems    {   }



    class MotorBike : AItems    {  }



    class EntertainmentAllowance : AItems  { }



    class TravelAllowance : AItems  { }



    class Salary : AItems   {  }



    class Incentives : AItems  {  }



   

    abstract class AEmployee

    {

        List benefits;



        public AEmployee()

        {

            benefits = new List();

        }



        public void AddBenefit(AItems ben)

        {

            benefits.Add(ben);

        }



        public void PrintBenefits()

        {

            foreach (AItems a in benefits)

            {

                Console.WriteLine(a.ToString());

            }

        }



        public override string ToString()

        {

            return this.GetType().Name;

        }

    }



   

    class Manager : AEmployee

    {

        public Manager()

        {

            AddBenefit(new Car());

            AddBenefit(new CellPhone());

            AddBenefit(new LapTop());

            AddBenefit(new EntertainmentAllowance());

            AddBenefit(new TravelAllowance());

            AddBenefit(new Salary());

            AddBenefit(new Incentives());

        }

    }



   

    class Engineer : AEmployee

    {

        public Engineer()

        {

            AddBenefit(new Computer());

            AddBenefit(new MotorBike());

            AddBenefit(new TravelAllowance());

            AddBenefit(new Salary());

        }

    }

}

Jumat, 29 Maret 2013

Design Pettern Singleton dengan bahasa CSharp

Akhinya ada entri baru untuk blog yang setelah beberapa tahun tidak di urus sampai lupa caranya untuk membuat postingan baru... kebiasaan dengan tampilan lama jadi agak susah menyesuai kan dengan yang baru, maklum sih masi nubi. langsung saja nih mau bikin contoh program Design Pettern Singleton dengan bahasa C#, tapi sebelum masuk ke program apa sih Design Pettern Singleton... sebenarnya Design Pettern tidak hanya Singleton saja melainkan ada banyak sih (lupa jumlahnya akibat kebanyakan ngegame :P) cuma untuk postingan sekarang untuk tugas kuliah membantu sodara - sodara sekalian agar bisa melakukan koneksi ke database dengan lebih efisien. sebenarnya tanpa menggunakan singleton pun bisa terkoneksi ke database cuma akan lebih memboroskan memory di karenakan koneksi ke database yang menggunakan koneksi secara indifidual contoh nya seperti di bawah ini :

 nah sodara - sodara sekalian bisa berpikiran "kalau cuma 3 koneksi sih tidak apa - apa" tetapi bayangkan bila ada 100 koneksi atau lebih itu akan mengganggu kinerja database itu sendiri. pastinya ada cara yang lebih efisien yang akan mempermudah koneksi ke database tanpa memerlukan memory yang tidak terlalu besar salah satunya adalah Singleton. cara kerja singleton adalah dengan menggunakan 1 koneksi saja tetapi dapat menampung semua query yang akan di kirimkan ke database untuk contohnya pada gambar di bawah ini :

 lebih effisien kan sodara ?? dan pastinya lebih hemat memory tetapi bagaimana sih cara mengimplementasikan kedalam bahasa pemrogaram C# untuk sementara saya akan memberikan contoh program yang sederhana dikarenakan kemampuan saya yang masi nubi,
using System;

namespace Singleton
{
 
 class Program
{
    static void Main(string[] args)
    {
        connect x = connect.Instance();
        x.Name = "Blue";
        connect z = connect.Instance();
        z.Status = "Mahasiswa";
        
        connect b = connect.Instance();
        Console.WriteLine("Nama : " + b.Name);

        connect c = connect.Instance();
        Console.WriteLine("Status : " + c.Status);
        Console.ReadKey(true);
    }
}

public class connect
{
    private static connect self;
    private string name;
    private string status;
 public string Status
 {
  get{return status;}
  set{ status = value;}
 }
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

   
    private connect() { }

    public static connect Instance()
    {
        
        if (self == null)
            self = new connect();
        return self;
    }
}
}
setelah di compile hasilnya akan seperti ini :



mudah kan sodara
untuk sementara cukup sekian penjelasan dari saya. semoga menjadi manfaat bagi banyak orang :D

Rabu, 04 Juli 2012

Event Headling

Event handler adalah satu atau lebih method yang dijalankan ketika sebuah event terjadi pada pemrograman menggunakan Windows Form Aplication. Misalnya, ketika kita mengklik sebuah tombol maka akan terjadi sebuah event, event itu bisa mengakibatkan suatu window atau jendela tertutup, membuka window atau jendela baru dan masih banyak lagi. Apabila kita menggunakan Microsoft Visual Studio, jenis-jenis event bisa kita lihat pada tab propertis. .

Berikut adalah contoh program menurut versi :

Versi C# :


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace EventhandlingManual

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            this.button1.Click += new EventHandler(EvenHnd);

            this.button2.Click += new EventHandler(EvenHnd);

        }



        private void EvenHnd(object sender, EventArgs e)

        {

            Button button = sender as Button;

            if (button.Name == "button1")

            {

                MessageBox.Show("Tombol ! Success!!");

            }

            else if (button.Name == "button2")

            {

                MessageBox.Show("Tombol 2 Success!!");

            }
        }
    }
}
C# image

Versi Java :

package createhandling;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class testButton {
    public void test() {
	//mendeklarasikan beberapa buton
	JButton btn1=new JButton("button1");
        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JOptionPane.showMessageDialog(null, "Tombol 1 Success!!");
            }
        });
	JButton btn2=new JButton("button2");
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JOptionPane.showMessageDialog(null, "Tombol 2 Success!!");
            }
        });
        JPanel butonPanel=new JPanel();
	butonPanel.add(btn1);
	butonPanel.add(btn2);
	//coba//membuat pesan dengan label
	JLabel msg=new JLabel("contoh tombol",JLabel.CENTER);
	//membuat frame untuk menampilkan buton
	JFrame frame=new JFrame("form 1");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	JRootPane rootPane=frame.getRootPane();
	rootPane.setDefaultButton(btn1);
	//membuat layout dan dispalay
	Container c=frame.getContentPane();
	c.add(msg,BorderLayout.CENTER);
	c.add(butonPanel,BorderLayout.SOUTH);
	frame.setSize(200, 200);
	frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        testButton oye = new testButton();
        oye.test();
    }

}
Java image Link Download : Here !!!

Minggu, 17 Juni 2012

Multitread

Arti istilah Multithreading dianggap berkaitan erat dengan pengertian multi thread merupakan jalannya beberapa proses dengan urutan yang cepat (multitasking) dalam satu program. Multithreading ini merupakaan teknik pada manipulasi data dimana node-node pada struktur pohon data berisi penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur menjadi lebih efisien.

Kalau sebelumnya kita telah mempelajari tentang proses, namun seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan beberapa task secara bersamaan walaupun otaknya hanya satu.

Keuntungan MultiThreading

Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:

1. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.

2. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.

4. Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.

Model MultiThreading

Beberapa terminologi yang akan dibahas:

1. Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.

2. Thread Kernel: Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.

Model-Model MultiThreading:

1. Model Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.

2. Model One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.

3. Model Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Kesimpulan

Thread adalah alur kontrol dari suatu proses.

Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.

Tiga model Multithreading:
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.

Pembatalan Thread: Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya.

Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation.
2. Deffered cancellation.

Thread Pools menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil.

Thread Schedulling ada 2 macam:
1. Local Schedulling.
2. Global Schedulling.

Istilah thread di Linux adalah task.
Pembuatan Thread di Linux menggunakan System call clone().

Mirip seperti sistem operasi desktop, Symbian OS mampu melakukan operasi secara multithreading, multitasking dan pengamanan terhadap memori. Dan semua pemrograman pada Symbian dilakukan secara event-based, artinya hardware CPU menjadi tidak aktif ketika tidak ada inputan berupa aktivitas tertentu. Namun perlu dipahami sistem operasi ini memang ditujukan untuk diinstal pada peralatan mobile dengan keterbatasan sumber daya. Multithread dan multitasking memberikan kemampuan Symbian OS untuk menjalankan lebih dari satu aplikasi sekaligus. Namun khusus ini, adanya preemptive multitasking kernel akan memberi tiap-tiap program suatu pembagian waktu pemprosesan yang dilakukan bergantian dengan cepat sehingga nampak bagi pemakai seolah-olah proses ini dieksekusi secara bersamaan. Untuk itu telah didefinisikan penjadwalan berdasar prioritas tertentu untuk menentukan proses mana yang berjalan terlebih dahulu dan proses apa berikutnya serta berapa banyak waktu akan jadi diberi.

Berikut contoh program menurut versi nya :

Versi C#



using System;
using System.Threading;

namespace MultiThreet
{
 
class Program {
static void CetakThread2() {
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 2");
  Thread.Sleep(100);

 }
}
static void Cetakthread3() {
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 3");
  Thread.Sleep(1000);
 }
}
static void Main(string[] args)  {
 Thread thread2 = new Thread(CetakThread2);
 Thread thread3 = new Thread(Cetakthread3);
 thread2.Start();
 thread3.Start();
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 1");
 }
 Console.ReadKey(true);
 }
}
}

Versi Java


package multi;



class thrid extends Thread {

String nama;

public thrid(String a) {

nama = a;

}

public void run() {

for(byte i = 0; i<50; i++) {

System.out.println(nama);

}

}

}



public class Main {

public static void main(String[] args) {

thrid t = new thrid("Data 2");

thrid t2 = new thrid("Data 3");

t.start();

t2.start();

int a = 50;

for (int i = 0; i <= a; i++)

{

System.out.println("Data 1");

}

}

}

Link Download : Here !!!

Exception Handling

Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat dijalankan. Penanganan eksepsi pada perintah membawa pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi  adalah objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu bagian profram.

Saat suatu keadaan eksepsi muncul, suatu objeke xcep tio n dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil.


Dasar-dasar Penanganan Eksepsi

Penanganan eksepsi diatur dengan lima kata kunci :try,
catch, throw, throwsdan finally. Pada dasarnya try digunakan untuk
mengeksekusi suatu bagian program, dan jika muncul kesalahan, sistem akan melakukanth row suatu eksepsi yang dapat andaca tch berdasarkan tipe eksepsinya, atau yang anda berikanf in a lly dengan penangan default.

Versi C#

using System;

namespace exception_hadling

{

class Program {

private static string LoginUser() {

string usr;

Console.Write("Masukkan Username : ");

usr = Convert.ToString(Console.ReadLine());

return usr;

}

private static string LoginNIM() {

string nim;

Console.Write("Masukkan Nim : ");

nim = Convert.ToString(Console.ReadLine());

return nim;

}

private static void Konf(string userName, string passwrd) {

bool error;

error = true;

while (error == true) {

try {

while (userName != "iqbal" || passwrd != "1110100637") {

Console.WriteLine();

Console.WriteLine("#User Name dan/ atau Password salah!");

Console.WriteLine();

userName = LoginUser():

passwrd = LoginNIM();

}

error = false;

}

catch (Exception)  {

Console.WriteLine();

Console.WriteLine("#User Name dan/ atau Password salah!");

Console.WriteLine();

}

}

}

static void Main(string[] args) {

string userName;

string passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userN`me, passwrd);

Console.WriteLine();

Console.WriteLine("Username dan Password benar");

Console.ReadKey(true);

}

}

}

Versi Java :


package exceptionhadling;

import java.util.Scanner;

public class Main {

public static Scanner input = new Scanner(System.in);

public static String LoginUser(){

String usr;

System.out.print("Masukkan Username : ");

usr = input.next();

return usr;

}

public static String LoginNIM() {

String nim;

System.out.print("Masukkan Nim : ");

nim = input.next();

return nim;

}

private static void Konf(String userName, String passwrd) {

Boolean error;

error = true;

while (error == true) {

try {

while (!userName.equalsIgnoreCase("iqbal") ||

!passwrd.equals("1110100637")) {

System.out.println();

System.out.println("#User Name dan/ atau Password salah!");

System.out.println();

userName = LoginUser();

passwrd = LoginNIM();

}

error = false;

}

catch (Exception e) {

System.out.println();

System.out.println("#User Name dan/ atau Password salah!");

System.out.println();

}

}

}

public static void main(String[] args) {

String userName;

String passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userName, passwrd);

System.out.println();

System.out.println("Username dan Password benar");

}

}


Versi C++ :

#include 

#include



using namespace std;



static string LoginUser() {

string usr;

cout << "Masukkan Username : ";

cin >> usr;

return usr;

}

static string LoginNIM() {

string nim;

cout << "Masukkan Nim : ";

cin >> nim;

return nim;

}

static void Konf(string userName, string passwrd) {

bool error;

error = true;

while (error == true) {

try {

while (userName != "iqbal" || passwrd != "1110100637") {

cout << endl;

cout << "#User Name dan/ atau Password salah!" << endl;

cout << endl;

userName = LoginUser();

passwrd = LoginNIM();

}

error = false;

}

catch (exception e) {

cout << endl;

cout << "#User Name dan/ atau Password salah!"<< endl;

cout << endl;

}

}

}

int main(void) {

string userName;

string passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userName, passwrd);

cout << endl;

cout << "Username dan Password benar" << endl;

system("PAUSE");

}

Link Download : HERE !!!

Twitter Delicious Facebook Digg Stumbleupon Favorites More