JavaRush /Blog Jawa /Random-JV /prinsip OOP

prinsip OOP

Diterbitake ing grup
Basa Jawa minangka basa kang asipat obyek. Iki tegese sampeyan kudu nulis program Jawa nggunakake gaya obyek-oriented. Lan gaya iki adhedhasar panggunaan obyek lan kelas ing program kasebut.

Prinsip dasar OOP:

Prinsip OOP - 1Ayo nyoba, kanthi bantuan conto, kanggo mangerteni apa kelas lan obyek, uga carane ngetrapake prinsip dhasar OOP ing praktik: abstraksi, warisan, polimorfisme lan enkapsulasi.

Apa iku obyek?

Ing donya kita manggon ing kasusun saka obyek. Yen dideleng, kita bakal weruh yen kita diubengi dening omah, wit, mobil, perabotan, piring, komputer. Kabeh barang kasebut 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 kerja, kita nggunakake mobil, yen kita arep mangan, kita nggunakake piring, lan yen kita kudu santai, kita kudu sofa nyaman. Wong wis biasa mikir kanthi objektif kanggo ngrampungake masalah ing saben dinane. Iki minangka salah sawijining alasan kanggo nggunakake obyek ing pemrograman, lan pendekatan kanggo nggawe program kasebut diarani orientasi obyek. Ayo menehi conto. Bayangake sampeyan wis ngembangake model telpon anyar lan pengin miwiti produksi massal. Minangka desainer telpon, sampeyan ngerti apa iku, carane iku bakal dienggo, lan apa bagean bakal kalebu (kasus, mikropon, speaker, kabel, tombol, etc.). Nanging, mung sampeyan sing ngerti carane nyambungake bagean kasebut. Nanging, sampeyan ora ngrancang nggawe telpon pribadi, amarga iki sampeyan duwe karyawan kabeh. Supaya sampeyan ora kudu nerangake saben-saben carane nyambungake bagean telpon, lan supaya kabeh telpon ing produksi dadi padha, sadurunge miwiti produksi, sampeyan kudu nggawe gambar ing wangun a gambaran saka struktur telpon. Ing OOP, deskripsi, gambar, diagram utawa cithakan kasebut diarani kelas, saka ngendi obyek digawe nalika program dieksekusi. Kelas minangka katrangan babagan obyek sing durung digawe, kaya cithakan umum sing dumadi saka lapangan, metode lan konstruktor, lan obyek minangka conto saka kelas sing digawe adhedhasar katrangan iki.

abstraksi OOP

Saiki ayo dipikirake kepiye carane bisa pindhah saka obyek ing jagad nyata menyang obyek ing program, nggunakake telpon minangka conto. Sajarah sarana komunikasi iki ngluwihi 100 taun lan telpon modern, ora kaya leluhur saka abad kaping 19, minangka piranti sing luwih rumit. Nalika nggunakake telpon, kita ora mikir babagan struktur lan proses sing kedadeyan ing njero. Kita mung nggunakake fungsi sing diwenehake dening pangembang telpon - tombol utawa layar tutul kanggo milih nomer lan nelpon. Salah sawijining antarmuka telpon pisanan yaiku tombol sing sampeyan nguripake kanggo nelpon. Mesthi, iki ora trep banget. Nanging, gagang nindakake fungsine kanthi bener. Yen sampeyan ndeleng telpon paling modern lan pisanan, sampeyan bisa langsung ngenali rincian sing paling penting sing penting kanggo piranti saka pungkasan abad kaping 19 lan kanggo smartphone ultra-modern. Iki nelpon (nelpon nomer) lan nampa telpon. Ateges, iki sing ndadekake telpon dadi telpon lan ora liya. Saiki kita wis ngetrapake prinsip kasebut ing OOP - nyorot karakteristik lan informasi sing paling penting babagan obyek. Prinsip OOP iki diarani abstraksi. Abstraksi ing OOP uga bisa ditetepake minangka cara kanggo makili unsur masalah nyata minangka obyek ing program. Abstraksi tansah digandhengake karo generalisasi sawetara informasi babagan sifat obyek utawa obyek, mula sing paling penting yaiku misahake informasi sing signifikan saka informasi sing ora penting ing konteks masalah sing ditanggulangi. Ing kasus iki, bisa ana sawetara tingkat abstraksi. Ayo coba aplikasi prinsip abstraksi ing telpon kita. Pisanan, ayo nyorot jinis telpon sing paling umum wiwit wiwitan nganti saiki. Contone, bisa diwakili ing wangun diagram sing ditampilake ing Gambar 1. Prinsip OOP - 2Saiki, kanthi bantuan abstraksi, kita bisa nyorot informasi umum ing hierarki obyek iki: jinis obyek abstrak umum - telpon, karakteristik umum telpon - taun digawe, lan antarmuka umum - kabeh telpon bisa nampa lan ngirim telpon. Mangkene apa sing katon ing basa Jawa:
public abstract class AbstractPhone {
    private int year;

    public AbstractPhone(int year) {
        this.year = year;
    }
    public abstract void call(int outputNumber);
    public abstract void ring (int inputNumber);
}
Adhedhasar kelas abstrak iki, kita bakal bisa nggawe jinis telpon anyar ing program nggunakake prinsip OOP Java dhasar liyane, kang bakal nimbang ing ngisor iki.

Enkapsulasi

Kanthi bantuan abstraksi, kita nyorot apa sing umum kanggo kabeh obyek. Nanging, saben model telpon individu lan rada beda karo liyane. Kepiye carane bisa nggambar wates ing program lan nemtokake individualitas iki? Kepiye carane bisa mesthekake yen ora ana pangguna sing ora sengaja utawa sengaja ngrusak telpon, utawa nyoba ngowahi model siji menyang model liyane? Kanggo jagad obyek nyata, jawabane jelas: sampeyan kudu nglebokake kabeh bagean menyang awak telpon. Sawise kabeh, yen kita ora nindakake iki lan ninggalake kabeh njero telpon lan kabel sing nyambungake ing njaba, mesthi bakal ana eksperimen sing kepengin weruh sing pengin "ngapikake" operasi telpon. Kanggo ngindhari gangguan kasebut ing desain lan operasi obyek, OOP nggunakake prinsip enkapsulasi - prinsip dhasar liyane OOP, ing ngendi atribut lan prilaku obyek digabungake ing siji kelas, implementasi internal obyek kasebut didhelikake saka pangguna, lan antarmuka mbukak kasedhiya kanggo nggarap obyek. Tugas programer yaiku kanggo nemtokake atribut lan metode sing bakal diakses umum lan minangka implementasi internal obyek kasebut lan ora kudu diowahi.

Enkapsulasi lan Kontrol Akses

Contone, nalika produksi, informasi babagan iki diukir ing mburi telpon: taun pabrik utawa logo perusahaan pabrikan. Informasi iki cukup khusus ciri model iki - kondisi sawijining. Kita bisa ngomong sing pangembang telpon njupuk care saka immutability saka informasi iki - iku dipercaya sing sapa bakal mikir kanggo mbusak engraving. Ing donya Jawa, kahanan obyek mangsa diterangake ing kelas nggunakake kolom, lan prilaku diterangake nggunakake metode. Kemampuan kanggo ngganti negara lan prilaku ditindakake kanthi nggunakake modifier akses menyang kolom lan metode - private, protected, public, lan default(akses standar). Contone, kita mutusake yen taun nggawe, jeneng pabrikan telpon, lan salah sawijining metode kalebu implementasi internal kelas lan ora bisa diganti dening obyek liyane ing program kasebut. Nggunakake kode, kelas bisa diterangake kaya ing ngisor iki:
public class SomePhone {

    private int year;
    private String company;
    public SomePhone(int year, String company) {
        this.year = year;
        this.company = company;
    }
private void openConnection(){
    //findComutator
    //openNewConnection...
}
public void call() {
    openConnection();
    System.out.println("I'm calling a number");
}

public void ring() {
    System.out.println("Дзынь-дзынь");
}

 }
A modifier privatendadekake lapangan lan cara saka kelas kasedhiya mung ing kelas sing. Iki tegese privatekolom ora bisa diakses saka njaba, utawa privatecara bisa diarani. Ndhelikake akses menyang cara openConnectionuga menehi kesempatan kanggo ngganti implementasi internal metode iki kanthi bebas, amarga metode iki dijamin ora bakal digunakake dening obyek liyane lan ora bakal ngganggu operasi kasebut. Kanggo nggarap obyek kita, kita ninggalake cara mbukak callnggunakake ringmodifier public. Nyedhiyakake cara umum kanggo nggarap obyek uga minangka bagean saka mekanisme enkapsulasi, amarga yen akses menyang obyek ditolak, mula ora ana gunane.

pusaka

Ayo deleng denah telpon maneh. Sampeyan bisa ndeleng manawa iku nggambarake hirarki ing ngendi model sing ana ing ngisor iki nduweni kabeh karakteristik model sing luwih dhuwur ing cabang, ditambah karo 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). Ing kasus iki, kita bisa ngomong babagan warisan properti obyek. Ing pemrograman, warisan yaiku panggunaan kelas sing wis ana kanggo nemtokake kelas anyar. Ayo goleki conto nggawe kelas smartphone nggunakake warisan. Kabeh telpon tanpa kabel didhukung dening baterei sing bisa diisi ulang, sing duwe umur operasi tartamtu sajrone pirang-pirang jam. Dadi ayo tambahake properti iki menyang kelas telpon nirkabel:
public abstract class WirelessPhone extends AbstractPhone {

    private int hour;

    public WirelessPhone(int year, int hour) {
        super(year);
        this.hour = hour;
    }
    }
callPonsel marisi properti saka telpon nirkabel, kita uga nambah implementasine saka lan cara kanggo kelas iki ring:
public class CellPhone extends WirelessPhone {
    public CellPhone(int year, int hour) {
        super(year, hour);
    }

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

    @Override
    public void ring(int inputNumber) {
        System.out.println("A subscriber is calling you" + inputNumber);
    }
}
Lan pungkasane, kelas smartphone, sing, ora kaya ponsel klasik, duwe sistem operasi lengkap. Sampeyan bisa nambah program anyar sing didhukung dening sistem operasi iki menyang smartphone, saéngga ngembangake fungsine. Nggunakake 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, Smartphonekita digawe sethitik banget kode anyar kanggo njlèntrèhaké kelas, nanging kita tak kelas anyar karo fungsi anyar. Nggunakake prinsip warisan OOP bisa nyuda jumlah kode, lan mulane nggawe programer luwih gampang.

Polimorfisme

Yen kita ndeleng kabeh model telpon, mula, sanajan beda ing tampilan lan desain model, kita bisa ngenali sawetara prilaku umum ing wong - kabeh bisa nampa lan nelpon lan duwe set tombol kontrol sing cukup cetha lan prasaja. Nglamar salah siji saka prinsip dhasar saka OOP, kang wis dikenal kanggo kita, abstraksi ing istilah program, kita bisa ngomong sing obyek telpon wis siji antarmuka umum. Mulane, pangguna telpon cukup nyaman nggunakake model beda nggunakake tombol kontrol padha (mekanik utawa tutul), tanpa arep menyang rincian technical piranti. Dadi, sampeyan terus-terusan nggunakake ponsel, lan sampeyan bisa kanthi gampang nelpon saka mitra darat. Prinsip ing OOP nalika program bisa nggunakake obyek kanthi antarmuka sing padha tanpa informasi babagan struktur internal obyek kasebut diarani polimorfisme . Bayangake manawa ing program kita kudu njlèntrèhaké pangguna sing bisa nggunakake model telpon kanggo nelpon pangguna liya. Mangkene carane nindakake:
public class User {
    private String name;

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

    public void callAnotherUser(int number, AbstractPhone phone){
// here it is polymorphism - using the abstract type AbstractPhone phone in the code!
        phone.call(number);
    }
}
 }
Saiki ayo nerangake macem-macem model telpon. Salah sawijining model telpon pisanan:
public class ThomasEdisonPhone extends AbstractPhone {

public ThomasEdisonPhone(int year) {
    super(year);
}
    @Override
    public void call(int outputNumber) {
        System.out.println("Turn the Handle");
        System.out.println("Give me the phone number, sir");
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Phone calls");
    }
}
Telpon darat biasa:
public class Phone extends AbstractPhone {

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

    @Override
    public void call(int outputNumber) {
        System.out.println("I'm calling a number" + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Phone calls");
    }
}
Lan pungkasane, telpon video sing keren:
public class VideoPhone extends AbstractPhone {

    public VideoPhone(int year) {
        super(year);
    }
    @Override
    public void call(int outputNumber) {
        System.out.println("I connect a video channel for the subscriber" + outputNumber );
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("You have an incoming video call..." + inputNumber);
    }
  }
Ayo nggawe obyek ing metode main()lan nyoba metode kasebut callAnotherUser:
AbstractPhone firstPhone = new ThomasEdisonPhone(1879);
AbstractPhone phone = new Phone(1984);
AbstractPhone videoPhone=new VideoPhone(2018);
User user = new User("Andrey");
user.callAnotherUser(224466,firstPhone);
// Rotate the knob
// Tell me the number of the subscriber, sir
user.callAnotherUser(224466,phone);
//Call number 224466
user.callAnotherUser(224466,videoPhone);
//I connect the video channel for subscriber 224466
Kanthi nelpon cara sing padha ing obyek user, kita entuk asil sing beda. Pamilihan implementasi metode tartamtu callsajrone metode callAnotherUserdigawe kanthi dinamis adhedhasar jinis obyek panggilan tartamtu sajrone eksekusi program. Iki minangka kauntungan utama polimorfisme - pilihan implementasine sajrone eksekusi program. Ing conto kelas telpon ing ndhuwur, kita nggunakake metode overriding, teknik sing ngganti implementasine metode sing ditetepake ing kelas dasar tanpa ngganti tanda tangan metode. Iki ateges panggantos cara, lan iku cara anyar ditetepake ing subclass diarani nalika program mlaku. Biasane, nalika overriding cara, anotasi digunakake @Override, kang ngandhani compiler kanggo mriksa tandha saka cara overridden lan overriding. Akibaté , kanggo mesthekake yen gaya program sampeyan tundhuk karo konsep OOP lan prinsip OOP java, tindakake tips iki:
  • nyorot ciri utama obyek kasebut;
  • nyorot sifat lan prilaku umum lan nggunakake warisan nalika nggawe obyek;
  • nggunakake jinis abstrak kanggo njlèntrèhaké obyek;
  • Coba ndhelikake cara lan lapangan sing ana gandhengane karo implementasi internal kelas.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION