JavaRush /Blog Jawa /Random-JV /Hubungan antarane kelas. Warisan, komposisi lan agregasi

Hubungan antarane kelas. Warisan, komposisi lan agregasi

Diterbitake ing grup
Hello! Dina iki kita bakal nliti prinsip liyane babagan pemrograman berorientasi obyek (OOP) - warisan. Ing wektu sing padha, kita bakal sinau jinis hubungan liyane ing antarane kelas - komposisi lan agregasi. Topik iki ora bakal angel: sampeyan wis nemoni warisan lan contone kaping pirang-pirang ing kuliah sadurunge. Dina iki, sing utama yaiku nggabungake kawruh sampeyan, deleng mekanisme warisan lan sepisan maneh liwat conto :) Dadi, ayo!
Hubungan antarane kelas.  Warisan, komposisi lan agregasi - 1

Pusaka ing Jawa lan paedahe

Sing mbokmenawa elinga, warisan mekanisme sing ngijini sampeyan kanggo njlèntrèhaké kelas anyar adhedhasar ana (tiyang sepah). Ing kasus iki, properti lan fungsi kelas induk dipinjam dening kelas anyar. Ayo padha ngelingi conto warisan saka ceramah sadurunge:
public class Car {

   private String model;
   private int maxSpeed;
   private int yearOfManufacture;

   public Car(String model, int maxSpeed, int yearOfManufacture) {
       this.model = model;
       this.maxSpeed = maxSpeed;
       this.yearOfManufacture = yearOfManufacture;
   }


public void gas() {
       //...gas
   }

public void brake() {
       //...brake
   }
}


public class Truck extends Car {

   public Truck(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}



public class Sedan extends Car {
   public Sedan(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}
Ana program tartamtu ing ngendi kita bisa nggarap macem-macem jinis mobil. Sanajan sampeyan dudu penggemar mobil, sampeyan bisa uga ngerti manawa ana akeh jinis mobil sing padha ing saindenging jagad :) Mulane, kita misahake sifat umum mobil dadi kelas induk umum - Car. Apa kabeh mobil duwe umum, preduli saka jinis? Sembarang mobil wis taun Pabrik, jeneng model lan kacepetan maksimum. We sijine sifat iki menyang kothak model, maxSpeed, yearOfManufacture. Minangka kanggo prilaku, sembarang mobil bisa akselerasi lan brake :) Kita nemtokake prilaku iki ing cara gas()lan brake(). Apa keuntungan iki menehi kita? Kaping pisanan, ngurangi jumlah kode. Mesthi, kita bisa nindakake tanpa kelas induk. Nanging amarga saben mobil kudu bisa akselerasi lan rem, kita kudu nggawe metode gas()ing brake()kelas Truck, ing kelas Sedan, ing kelas F1Car, ing kelas, Sportcarlan ing kabeh kelas mobil liyane. Mbayangno carane akeh kode ekstra kita bakal nulis ing kasus iki. Aja lali babagan model, maxSpeed ​​​​lan yearOfManufacture lapangan: yen kita ninggalake kelas induk, kita bakal nggawe ing saben kelas mesin! Hubungan antarane kelas.  Warisan, komposisi lan agregasi - 2 Nalika kita duwe sawetara kelas mesin, jumlah kode sing bola-bali bakal dadi serius. Ngalih lapangan lan cara umum (uga disebut "negara" lan "prilaku") menyang kelas induk bakal ngidini kita ngirit akeh wektu lan papan. Yen jinis tartamtu nduweni sifat utawa cara sing mung unik lan ora ana ing jinis mesin liyane, ora masalah. Padha bisa tansah digawe ing kelas turunan, kapisah saka kabeh liyane.
public class F1Car extends Car {

   public void pitStop() {

       //...only racing cars make pit stops
   }

   public static void main(String[] args) {

       F1Car formula1Car = new F1Car();
       formula1Car.gas();
       formula1Car.pitStop();
       formula1Car.brake();
   }
}
Njupuk kasus mobil balap Formula 1. Dheweke, ora kaya "sederek", duwe prilaku sing unik - saka wektu kanggo wektu mandheg mandheg. Iki ora ngganggu kita. Kita wis njlèntrèhaké prilaku umum ing kelas induk Car, lan kita bisa nambah prilaku tartamtu saka kelas turunan ing kelas. Hubungan antarane kelas.  Warisan, komposisi lan agregasi - 3 Iki uga ditrapake kanggo lapangan: yen kelas anak nduweni sifat unik, kita bisa kanthi tenang ngumumake lapangan kasebut ing jerone lan ora kuwatir :) Kemampuan kanggo nggunakake maneh kode minangka kauntungan utama saka warisan. Penting banget kanggo programer supaya ora nulis kode sing ora perlu. Sampeyan bakal nemoni iki luwih saka sepisan ing karya sampeyan. Mangga elinga siji liyane sing penting banget: ora ana pirang-pirang pusaka ing Jawa. Saben kelas entuk warisan mung siji kelas. Kita bakal ngomong babagan alasan iki kanthi luwih rinci ing kuliah sing bakal teka, nanging saiki mung elinga. Iki, kanthi cara, mbedakake Jawa saka sawetara basa OOP liyane. Contone, C ++ duwe sawetara warisan. Kabeh luwih utawa kurang jelas karo warisan - ayo nerusake.

Komposisi lan Agregasi

Kelas lan obyek bisa digandhengake karo siji liyane. Warisan nggambarake hubungan "is" (utawa ing basa Inggris "IS A"). Leo minangka Kewan. Hubungan iki bisa gampang diungkapake kanthi nggunakake warisan, ing ngendi Animalkelas bakal dadi wong tuwa lan Lionkelas bakal dadi anak. Nanging, ora kabeh sesambetan ing donya diterangake ing cara iki. Contone, keyboard mesthi disambungake menyang komputer ing sawetara cara, nanging dudu komputer . Tangane ana hubungane karo wong kasebut, nanging dudu wong kasebut. Ing kasus kasebut, adhedhasar jinis hubungan sing beda: ora "iku", nanging "bagean" ("HAS A"). Tangan dudu manungsa, nanging minangka bagéan saka wong. Papan tombol dudu komputer, nanging minangka bagéan saka komputer. Hubungan HAS A bisa diterangake ing kode nggunakake mekanisme komposisi lan agregasi . Bentenipun antarane wong-wong mau dumunung ing "ketaatan" sambungan kasebut. Ayo menehi conto prasaja: Kita duwe kita Car- mobil. Saben mobil duwe mesin. Kajaba iku, saben mobil duwe penumpang ing njero. Apa bedane dhasar antarane lapangan Engine enginelan Passenger [] passengers? Yen mobil ana penumpang ing njero А, iki ora ateges ora ana Bpenumpang C. Siji mobil bisa nampung sawetara penumpang. Kajaba iku, yen kabeh penumpang dibusak saka mobil, iku bakal terus kanggo fungsi quietly. Hubungane antarane kelas Carlan massa penumpang Passenger [] passengerskurang ketat. Iki diarani agregasi . Ana artikel apik babagan topik iki: Hubungan antarane kelas (obyek) . Iki nyedhiyakake conto panggabungan liyane sing apik. Ayo kita duwe kelas Studentsing nuduhake siswa, lan kelas StudentsGroup(kelompok siswa). Siswa bisa dadi anggota klub fisika, klub penggemar siswa Star Wars utawa tim KVN. Komposisi minangka jinis komunikasi sing luwih ketat. Nalika nggunakake komposisi, obyek ora mung minangka bagéan saka sawetara obyek, nanging uga ora bisa dadi kagungane obyek liyane saka jinis padha. Conto sing paling gampang yaiku mesin mobil. Mesin iku bagéan saka mobil, nanging ora bisa dadi bagéan saka mobil liyane. Nalika sampeyan bisa ndeleng, sambungan sing luwih kenceng saka Carlan Passengers. Hubungan antarane kelas.  Warisan, komposisi lan agregasi - 4
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION