Olioiden koostaminen
Rakentakaa suurempia olioita yhdistämällä pienempiä. Koostaminen mallintaa has-a-suhteita, kuten Car-oliota, jolla on Engine.
Olioiden koostaminen on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Määritelmä
Kompositio tarkoittaa suuremman olion rakentamista pienemmistä olioista, jotka se omistaa. Kyseessä on has-a-suhde: Car-oliolla on Engine-olio. Näin luokat pysyvät pieninä ja selkeästi rajattuina, ja suurempi olio delegoi työn osilleen.
Hyödyt
Kompositio helpottaa uudelleenkäyttöä: osan voi vaihtaa muuttamatta kokonaisuutta. Se parantaa myös testattavuutta, koska jokainen osa voidaan testata erikseen. Aloittakaa yksinkertaisesti ja antakaa yhden luokan riippua toisesta kentän kautta.
Kompositio vai perintä
Perintä kuvaa is-a-suhdetta (Square on Shape). Kompositio kuvaa has-a-suhdetta (Car-oliolla on Engine-olio). Suosikaa ensin kompositiota ja käyttäkää perintää vain, kun todellinen is-a-suhde sopii luontevasti.
Omistajuus ja elinkaari
Kun olio omistaa osansa, se vastaa niiden luomisesta ja käyttämisestä. Osat eivät yleensä elä itsenäisesti, vaan ovat olemassa, koska kokonaisuus on olemassa. Tämä ajatus pitää vastuut selkeinä.
Suunnittelun vaiheet
Valitkaa kokonaisuus (Car) ja sen osat (Engine). Listatkaa, mitä kukin osa tietää ja tekee. Sijoittakaa sitten osaoliot kokonaisuuden kentiksi ja kirjoittakaa pieniä metodeja, jotka käyttävät osia työn suorittamiseen.
Koodi: has-a-esimerkki
Koodissa Car omistaa Enginen ja kutsuu sen metodia. Kun osa luodaan ensin ja välitetään konstruktorille, koodi pysyy yksinkertaisena ja joustavana.
public class Main {
// Very small classes to show composition (has-a)
static class Engine {
int horsepower;
Engine(int hp) { horsepower = hp; }
String info() { return horsepower + " HP engine"; }
}
static class Car {
String model;
Engine engine; // Car has an Engine (composition)
Car(String m, Engine e) {
model = m;
engine = e; // store the part
}
void printSpecs() {
// Use the part to build a message
System.out.println(model + " with " + engine.info());
}
}
public static void main(String[] args) {
// Create part first
Engine e = new Engine(90);
// Assemble whole with the part
Car c = new Car("CityCar", e);
// Use the whole, which delegates to its part
c.printSpecs();
}
}
Komposition tarkistus
Pikatarkistus: mikä väite kuvaa kompositiota parhaiten?
Kertaus
Kertaus: kompositio mallintaa has-a-suhdetta. Aloittakaa pienestä osasta, antakaa sille selkeä tehtävä ja antakaa kokonaisuuden käyttää sitä yksinkertaisten metodikutsujen kautta.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Olioiden koostaminen” ilmainen?
Kyllä – oppitunnin ”Olioiden koostaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Olioiden koostaminen”?
Rakentakaa suurempia olioita yhdistämällä pienempiä. Koostaminen mallintaa has-a-suhteita, kuten Car-oliota, jolla on Engine. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Olioiden koostaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- this sekä toString/equals/hashCode
- Olioiden koostaminen
- Toimialueen mallintaminen (UML→koodi)