KodeGym/Blog Jawa/Acak/Prinsip OOP
John Squirrels
tingkat
San Francisco

Prinsip OOP

Diterbitake ing grup
Basa Jawa minangka basa kang asipat obyek. Iki tegese sampeyan kudu nulis program Java nggunakake paradigma berorientasi obyek. Lan paradigma iki mbutuhake nggunakake obyek lan kelas ing program sampeyan. Coba gunakake conto kanggo mangerteni apa kelas lan obyek, lan carane aplikasi prinsip OOP dhasar (abstraksi, warisan, polimorfisme lan enkapsulasi) ing laku.

Apa iku obyek?

Donya sing kita urip iki dumadi saka obyek. Delengen ing sakubenge, kita bisa ndeleng manawa kita diubengi dening omah, wit, mobil, perabotan, piring, lan komputer. Kabeh iki minangka obyek, lan saben-saben nduweni ciri, prilaku, lan tujuan tartamtu. We sing rakulino kanggo obyek, lan kita tansah digunakake kanggo tujuan banget tartamtu. Contone, yen kita kudu menyang kantor, kita nggunakake mobil. Yen arep mangan, kita nggunakake piring. Lan yen kita pengin ngaso, kita nemokake sofa sing nyaman. Manungsa wis biasa mikir babagan obyek kanggo ngrampungake masalah ing urip saben dina. Iki minangka salah sawijining alesan kenapa obyek digunakake ing pemrograman. Pendekatan iki diarani pemrograman berorientasi obyek. Ayo menehi conto. Bayangake sampeyan wis nggawe telpon anyar lan pengin miwiti produksi massal. Minangka pangembang telpon, sampeyan ngerti kanggo apa, kepriye fungsine, lan apa bageane (badan, mikropon, speaker, kabel, tombol, lsp). Apa maneh, mung sampeyan sing ngerti carane nyambungake bagean kasebut. Nanging sampeyan ora ngrencanakake nggawe telpon kanthi pribadi — sampeyan duwe tim kabeh karyawan kanggo nindakake iki. Kanggo ngilangi kudu bola-bali nerangake carane nyambungake bagean telpon, lan kanggo mesthekake yen kabeh telpon digawe ing cara sing padha, sadurunge sampeyan miwiti gawé, sampeyan kudu nggawe drawing sing njlèntrèhaké carane telpon diatur. Ing OOP, kita nyebut deskripsi, gambar, diagram, utawa template kasebut minangka kelas. Iku dadi basis kanggo nggawe obyek nalika program lagi mlaku. Kelas minangka deskripsi obyek saka jinis tartamtu - kaya cithakan umum sing dumadi saka kolom, metode lan konstruktor. Objek minangka conto saka kelas.

abstraksi

Saiki ayo dipikirake kepiye carane bisa pindhah saka obyek ing jagad nyata menyang obyek ing program. Kita bakal nggunakake telpon minangka conto. Sarana komunikasi iki nduweni sejarah sing luwih saka 100 taun. Telpon modern minangka piranti sing luwih rumit tinimbang sadurunge abad kaping-19. Nalika nggunakake telpon, kita ora mikir babagan organisasi lan proses sing kedadeyan ing njero. Kita mung nggunakake fungsi sing diwenehake dening pangembang telpon: tombol utawa layar tutul kanggo ngetik nomer telpon lan nelpon. Salah sawijining antarmuka telpon pisanan yaiku engkol sing kudu diputer kanggo nelpon. Mesthi, iki ora trep banget. Nanging kawujud fungsi sawijining flawlessly. Yen sampeyan mbandhingake telpon paling modern lan pisanan, sampeyan bisa langsung ngenali fungsi sing paling penting kanggo piranti pungkasan abad ka-19 lan kanggo smartphone modern. Iku kemampuan kanggo nelpon lan kemampuan kanggo nampa telpon. Nyatane, iki sing ndadekake telpon dadi telpon, lan ora liya. Saiki mung ngetrapake prinsip OOP: ngenali karakteristik lan informasi sing paling penting saka obyek. Prinsip iki diarani abstraksi. Ing OOP, abstraksi uga bisa ditetepake minangka cara kanggo makili unsur tugas ing donya nyata minangka obyek ing program. Abstraksi tansah digandhengake karo generalisasi sifat tartamtu saka obyek, mula sing paling penting yaiku misahake informasi sing migunani saka sing ora penting ing konteks tugas sing ditindakake. Kajaba iku, bisa uga ana sawetara tingkat abstraksi. ayo Coba aplikasi prinsip abstraksi ing telpon kita. Kanggo miwiti, kita bakal nemtokake jinis telpon sing paling umum - saka telpon pisanan nganti saiki. Contone, kita bisa makili dheweke ing wangun diagram ing Gambar 1. Prinsip OOP - 2Nggunakake abstraksi, saiki kita bisa ngenali informasi umum ing hirarki obyek iki: obyek abstrak umum (telpon), ciri umum telpon (contone taun digawe), lan antarmuka umum (kabeh telpon bisa nampa lan nelpon). Mangkene carane katon ing basa Jawa:
public abstract class AbstractPhone {
    private int year;

    public AbstractPhone(int year) {
        this.year = year;
    }
    public abstract void call(int outgoingNumber);
    public abstract void ring(int incomingNumber);
}
Ing sawijining program, kita bisa nggawe jinis telpon anyar nggunakake kelas abstrak iki lan ngetrapake prinsip dhasar OOP liyane, sing bakal ditliti ing ngisor iki.

Enkapsulasi

Kanthi abstraksi, kita ngenali apa sing umum kanggo kabeh obyek. Nanging saben jinis telpon unik, beda-beda saka liyane. Ing program, kepiye carane nggawe wates lan ngenali individualitas iki? Kepiye carane supaya ora ana sing ora sengaja utawa sengaja ngrusak telpon utawa nyoba ngowahi model siji menyang model liyane? Ing jagad nyata, jawabane jelas: sampeyan kudu nyelehake kabeh bagean ing kasus telpon. Sawise kabeh, yen sampeyan ora - tinimbang ninggalake kabeh bagean internal telpon lan nyambungake kabel ing njaba - sawetara eksperimen penasaran mesthi pengin "ngapikake" telpon kita. Kanggo nyegah tinkering kasebut, prinsip enkapsulasi digunakake ing desain lan operasi obyek. Prinsip iki nyatakake yen atribut lan prilaku obyek digabungake ing kelas siji, obyek ' s implementasine internal didhelikake saka pangguna, lan antarmuka umum kasedhiya kanggo nggarap obyek. Tugas programer yaiku kanggo nemtokake atribut lan metode obyek sing kudu kasedhiya kanggo akses umum, lan rincian implementasine internal sing ora bisa diakses.

Enkapsulasi lan kontrol akses

Upaminipun informasi babagan telpon (taun produksi utawa logo pabrikan) diukir ing mburi nalika digawe. Informasi (negara) khusus kanggo model tartamtu iki. Kita bisa ujar manawa pabrikan nggawe manawa informasi iki ora bisa diganti - ora ana sing bakal mikir mbusak ukiran kasebut. Ing jagad Jawa, kelas nggambarake kahanan obyek ing mangsa ngarep nggunakake kolom, lan prilaku kasebut diterangake nggunakake metode. Akses menyang status lan prilaku obyek dikontrol nggunakake modifiers sing ditrapake ing kolom lan metode: pribadi, dilindhungi, umum, lan standar. Contone, kita mutusake manawa taun produksi, jeneng pabrikan, lan salah sawijining metode yaiku rincian implementasine internal kelas lan ora bisa diganti dening obyek liyane ing program kasebut. Ing kode,
public class SomePhone {

    private int year;
    private String company;
    public SomePhone(int year, String company) {
        this.year = year;
        this.company = company;
    }
private void openConnection(){
    // findSwitch
    // openNewConnection...
}
public void call() {
    openConnection();
    System.out.println("Calling");
}

public void ring() {
    System.out.println("Ring-ring");
}

 }
Modifier pribadi ngidini lapangan lan cara kelas bisa diakses mung ing kelas iki. Iki tegese ora bisa ngakses lapangan pribadi saka njaba, amarga cara pribadi ora bisa diarani. Watesan akses menyang metode openConnection uga menehi kemampuan kanggo ngganti implementasi internal metode kasebut kanthi bebas, amarga metode kasebut dijamin ora bakal digunakake utawa ngganggu karya obyek liyane. Kanggo nggarap obyek, kita ninggalake metode telpon lan dering sing kasedhiya nggunakake modifier umum. Nyedhiyakake cara umum kanggo nggarap obyek uga minangka bagean saka enkapsulasi, amarga yen akses ditolak rampung, mula ora ana gunane.

pusaka

Ayo dipikir maneh ing diagram telpon. Sampeyan bisa ndeleng manawa ana hirarki sing model duwe kabeh fitur saka model sing luwih dhuwur ing sadawane cabang, lan nambah sawetara dhewe. Contone, smartphone nggunakake jaringan seluler kanggo komunikasi (duwe sifat telpon seluler), nirkabel lan portabel (ndhuweni sifat telpon tanpa kabel), lan bisa nampa lan nelpon (duwe sifat telpon). Sing ana ing kene yaiku warisan properti obyek. Ing pemrograman, warisan tegese nggunakake kelas sing wis ana kanggo nemtokake sing anyar. Ayo nimbang conto nggunakake warisan kanggo nggawe kelas smartphone. Kabeh telpon tanpa kabel didhukung dening baterei sing bisa diisi ulang, sing nduweni umur baterei tartamtu. Dadi, kita nambahake properti iki menyang kelas telpon tanpa kabel:
public abstract class CordlessPhone extends AbstractPhone {

    private int hour;

    public CordlessPhone (int year, int hour) {
        super(year);
        this.hour = hour;
    }
    }
Ponsel duweni sifat telpon tanpa kabel, lan kita ngetrapake metode panggilan lan dering ing kelas iki:
public class CellPhone extends CordlessPhone {
    public CellPhone(int year, int hour) {
        super(year, hour);
    }

    @Override
    public void call(int outgoingNumber) {
        System.out.println("Calling " + outgoingNumber);
    }

    @Override
    public void ring(int incomingNumber) {
        System.out.println("Incoming call from " + incomingNumber);
    }
}
Lan pungkasane, kita duwe kelas smartphone, sing, ora kaya ponsel klasik, duwe sistem operasi lengkap. Sampeyan bisa nggedhekake fungsi smartphone kanthi nambahake program anyar sing bisa mbukak ing sistem operasi. Ing kode, kelas bisa diterangake kaya ing ngisor iki:
public class Smartphone extends CellPhone {

    private String operationSystem;

    public Smartphone(int year, int hour, String operationSystem) {
        super(year, hour);
        this.operationSystem = operationSystem;
    }
public void install(String program) {
    System.out.println("Installing " + program + " for " + operationSystem);
}

}
Nalika sampeyan bisa ndeleng, kita digawe cukup sing dicokot saka kode anyar kanggo njlèntrèhaké kelas Smartphone , nanging kita tak kelas anyar karo fungsi anyar. Prinsip OOP iki ndadekake bisa nyuda jumlah kode Java sing dibutuhake, saéngga urip luwih gampang kanggo programer.

Polimorfisme

Senadyan beda ing tampilan lan desain saka macem-macem jinis telpon, kita bisa ngenali sawetara prilaku umum: kabeh padha bisa nampa lan nelpon lan kabeh duwe kontrol cukup cetha lan prasaja. Ing babagan pemrograman, prinsip abstraksi (sing wis kita kenal) ngidini kita ujar manawa obyek telpon duwe antarmuka umum. Pramila wong bisa nggunakake macem-macem model telpon kanthi kontrol sing padha (tombol mekanik utawa layar demek), tanpa ngerteni rincian teknis piranti kasebut. Mangkono, sampeyan nggunakake ponsel terus-terusan lan sampeyan bisa kanthi gampang nelpon saka landline kanca. Prinsip OOP sing nyatakake yen program bisa nggunakake obyek kanthi antarmuka umum tanpa informasi babagan struktur internal obyek kasebut diarani polimorfisme. ayo s mbayangno sing kita kudu program kita kanggo njlèntrèhaké pangguna sing bisa nggunakake telpon sembarang kanggo nelpon pangguna liyane. Mangkene carane kita bisa nindakake:
public class User {
    private String name;

    public User(String name) {
        this.name = name;
            }

    public void callAnotherUser(int number, AbstractPhone phone){
// And here's polymorphism: using the AbstractPhone type in the code!
        phone.call(number);
    }
}
 }
Saiki kita bakal njlèntrèhaké sawetara jinis telpon. Salah siji saka telpon pisanan:
public class ThomasEdisonPhone extends AbstractPhone {

public ThomasEdisonPhone(int year) {
    super(year);
}
    @Override
    public void call(int outgoingNumber) {
        System.out.println("Crank the handle");
        System.out.println("What number would you like to connect to?");
    }

    @Override
    public void ring(int incomingNumber) {
        System.out.println("The phone is ringing");
    }
}
Telpon darat biasa:
public class Phone extends AbstractPhone {

    public Phone(int year) {
        super(year);
    }

    @Override
    public void call(int outgoingNumber) {
        System.out.println("Calling " + outgoingNumber);
    }

    @Override
    public void ring(int incomingNumber) {
        System.out.println("The phone is ringing");
    }
}
Lan pungkasane, telpon video sing apik:
public class VideoPhone extends AbstractPhone {

    public VideoPhone(int year) {
        super(year);
    }
    @Override
    public void call(int outgoingNumber) {
        System.out.println("Connecting video call to " + outgoingNumber);
    }
    @Override
    public void ring(int incomingNumber) {
        System.out.println("Incoming video call from " + incomingNumber);
    }
  }
Kita bakal nggawe obyek ing metode utama () lan nyoba metode callAnotherUser () :
AbstractPhone firstPhone = new ThomasEdisonPhone(1879);
AbstractPhone phone = new Phone(1984);
AbstractPhone videoPhone=new VideoPhone(2018);
User user = new User("Jason");
user.callAnotherUser(224466, firstPhone);
// Crank the handle
// What number would you like to connect to?
user.callAnotherUser(224466, phone);
// Calling 224466
user.callAnotherUser(224466, videoPhone);
// Connecting video call to 224466
Nelpon cara sing padha ing obyek pangguna ngasilake asil sing beda. A implementasine tartamtu saka cara telpon dipilih mbosenke nang cara callAnotherUser () adhedhasar jinis tartamtu saka obyek liwati nalika program mlaku. Iki minangka kauntungan utama polimorfisme - kemampuan kanggo milih implementasi nalika runtime. Ing conto kelas telpon sing diwenehi ing ndhuwur, kita nggunakake metode overriding - trick ing ngendi kita ngganti implementasine metode sing ditetepake ing kelas dhasar tanpa ngganti tandha cara. Iki ateges ngganti cara: metode anyar sing ditetepake ing subclass diarani nalika program dieksekusi. Biasane, nalika kita ngilangi metode, @Overrideanotasi digunakake. Iku ngandhani compiler kanggo mriksa teken saka cara overridden lan overriding. Pungkasan, kanggo mesthekake program Java sampeyan konsisten karo prinsip OOP, tindakake tips iki:
  • ngenali ciri utama obyek;
  • ngenali sifat lan prilaku umum lan nggunakake warisan nalika nggawe kelas;
  • nggunakake jinis abstrak kanggo njlèntrèhaké obyek;
  • nyoba kanggo tansah ndhelikake cara lan lapangan related kanggo implementasine internal kelas kang.
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar