CodeGym /Blog Jawa /Acak /Hubungan antarane kelas. Warisan, komposisi, lan agregasi...
John Squirrels
tingkat
San Francisco

Hubungan antarane kelas. Warisan, komposisi, lan agregasi

Diterbitake ing grup
Hi! Dina iki kita bakal nliti siji prinsip Pemrograman Berorientasi Objek (OOP): Warisan. Kita uga bakal sinau jinis hubungan liyane ing antarane kelas: komposisi lan agregasi. Hubungan antarane kelas.  Warisan, komposisi, lan agregasi - 1Topik iki ora bakal angel: sampeyan wis nemoni warisan lan conto warisan kaping pirang-pirang ing pelajaran kepungkur. Dina iki, sing utama yaiku nguatake kawruh sampeyan, mriksa mekanisme warisan kanthi luwih rinci, lan maneh mbukak sawetara conto. :) Inggih, ayo padha lunga!

Pusaka ing Jawa lan kaluwihane

Sing mesthi sampeyan elinga, warisan minangka mekanisme sing ngidini sampeyan njlèntrèhaké kelas anyar adhedhasar kelas sing wis ana (kelas induk). Kanthi mengkono, kelas anyar nyilih properti lan fungsi kelas induk. Ayo elinga conto warisan sing diwenehake ing pelajaran 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);
   }
}
Kita duwe program tartamtu sing melu nggarap macem-macem jinis mobil. Sanajan sampeyan dudu penggemar mobil, sampeyan bisa uga ngerti manawa ana akeh jinis mobil ing saindenging jagad. :) Dadi, kita bakal misahake sifat umum mobil dadi kelas induk umum sing diarani Car. Dadi apa sing umum kanggo kabeh mobil, preduli saka jinise? Saben mobil duwe taun manufaktur, jeneng model, lan kacepetan maksimal. Kita sijine sifat iki menyang model, maxSpeed, lan yearOfManufacturelapangan. Kanggo prilaku, mobil apa wae bisa akselerasi lan alon. :) We netepake prilaku iki ing gas()lanbrake()cara. Apa keuntungan iki menehi kita? Kaping pisanan, nyuda jumlah kode. Mesthi, kita bisa nindakake tanpa kelas induk. Nanging amarga saben mobil kudu bisa akselerasi lan alon mudhun, kita kudu nggawe gas()lan brake()cara ing Truck, Sedan, F1Car, lan SportsCarkelas lan ing saben kelas mobil liyane. Mbayangno carane akeh kode ekstra kita bakal kudu nulis. Lan aja lali babagan model, maxSpeed, lan yearOfManufacturelapangan: yen kita nyingkirake kelas induk, kita kudu nggawe ing saben kelas mobil! Hubungan antarane kelas.  Warisan, komposisi, lan agregasi - 2Nalika kita duwe sawetara kelas mobil, jumlah kode duplikat dadi serius. Ngalih lapangan lan cara umum (uga disebut "negara" lan "prilaku") menyang kelas induk ngidini kita ngirit akeh wektu lan papan. Yen sawetara jinis duwe sifat unik utawa cara sing ora ana ing jinis mobil liyane, ora ana masalah. Sampeyan bisa tansah nggawe wong ing kelas turunan, kapisah saka wong liya.

public class F1Car extends Car {

   public void pitStop() {

       // Only race cars make pit stops
   }

   public static void main(String[] args) {

       F1Car formula1Car = new F1Car();
       formula1Car.gas();
       formula1Car.pitStop();
       formula1Car.brake();
   }
}
Ayo ndeleng mobil balap Formula Siji minangka conto. Ora kaya "sedulure", dheweke duwe prilaku sing unik - padha mandheg saka wektu kanggo wektu. Iki ora ngganggu kita. Kita wis njlèntrèhaké prilaku umum ing Carkelas induk, lan prilaku tartamtu saka kelas turunan bisa ditambahake menyang kelas kasebut. Hubungan antarane kelas.  Warisan, komposisi, lan agregasi - 3Semono uga ing lapangan: yen kelas bocah nduweni sifat unik, kita kanthi tenang ngumumake lapangan kasebut ing kelas bocah lan ora kuwatir. :) Kemampuan kanggo nggunakake maneh kode minangka kauntungan utama saka warisan. Kanggo programer, penting banget kanggo ora nulis kode ekstra. Sampeyan bakal nemokake iki bola-bali ing karya. Elinga bab liya sing penting: Jawa ora duwe warisan pirang-pirang. Saben kelas mung marisi siji kelas. Kita bakal ngomong luwih akeh babagan alasan iki ing pelajaran sabanjure. Kanggo saiki, mung elinga. Miturut cara, iki ndadekake Jawa beda saka sawetara basa OOP liyane. Contone, C ++ ndhukung sawetara warisan. Kabeh luwih utawa kurang cetha karo warisan. Ayo nerusake.

Komposisi lan agregasi

Kelas lan obyek bisa disambungake bebarengan. Warisan nggambarake hubungan "is-a". Singa iku kewan. Hubungan kasebut gampang diungkapake kanthi nggunakake warisan, ing ngendi Animalkelas wong tuwa lan Lionanak. Nanging, ora kabeh hubungan diterangake kanthi cara iki. Contone, keyboard mesthi ana hubungane karo komputer, nanging dudu komputer . Tangan ana hubungane karo wong, nanging dudu wong. Ing kasus iki, kita duwe jinis hubungan liyane: ora "is-a", nanging "wis-a". Tangan dudu wong, nanging minangka bagean saka wong. Papan tombol dudu komputer, nanging minangka bagéan saka komputer. Sesambungan nduweni-a bisa diterangake ing kode nggunakake komposisi lan agregasi. Bentenipun dumunung ing "ketat" sesambetan. Ayo menehi conto prasaja: Kita duwe kelas Car. Saben mobil duwe mesin. Kajaba iku, saben mobil duwe penumpang. Apa bedane dhasar antarane lapangan Engine enginelan Passenger[] passengerslapangan? Kasunyatan yen penumpang Alungguh ing mobil ora ateges penumpang Blan Cora ana ing mobil. Mobil bisa cocog karo akeh penumpang. Apa maneh, yen kabeh penumpang metu saka mobil, isih bisa mlaku kanthi lancar. Hubungan antarane Carkelas lan Passenger[] passengersarray kurang ketat. Iki diarani agregasi . Iki nyedhiyakake conto panggabungan liyane sing apik. Upaminipun kita duwe Studentkelas lan aStudentGroupkelas. Siswa bisa gabung karo macem-macem organisasi mahasiswa: klub fisika, klub penggemar Star Wars, lan/utawa klub komedi siswa. Komposisi minangka jinis hubungan sing luwih ketat. Nalika nggunakake komposisi, obyek minangka bagean saka sawetara obyek lan ora bisa kalebu obyek liya saka jinis sing padha. Conto sing paling gampang yaiku mesin mobil. Mesin iku bagéan saka mobil lan ora bisa dadi bagéan saka mobil liyane. Kaya sing sampeyan ngerteni, hubungane luwih kenceng tinimbang hubungane Carlan Passengers. Hubungan antarane kelas.  Warisan, komposisi, lan agregasi - 4
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION