Suunnittelu
Suunnitelkaa hierarkia: valitkaa abstrakti perusluokka, luetelkaa konkreettiset muodot, valitkaa kentät ja metodit sekä määrittäkää yksinkertaiset polymorfiset operaatiot.
Suunnittelu on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.
Tavoite ja rajaus
Tavoite: Rakennetaan pieni muotojen hierarkia, jossa on abstrakti perusluokka (Shape) ja pari konkreettista muotoa (Circle, Rectangle). Suunnittelemme ensin yhteiset toiminnot ja varmistamme sitten suunnitelman pienillä koodiprototyypeillä.
Muodot ja kentät
Muodot: Circle (radius), Rectangle (width, height). Pidetään kentät vain niissä luokissa, joihin ne kuuluvat: radius Circle-luokassa ja width/height Rectangle-luokassa. Perusluokka sisältää toimintaa koskevat sopimukset, ei kaikkia kenttiä.
Toiminnot ja polymorfismi
Yhteiset toiminnot ovat area() ja perimeter(). Ilmoitamme ne Shape-luokassa, jotta mikä tahansa Shape voi vastata näihin kutsuihin. Shape-luokkien lista voi sisältää sekaisin Circle- ja Rectangle-olioita ja käsitellä niitä yhdenmukaisesti.
Koodi: API-luonnos
Prototyyppi 1: Määritellään Shape, jossa on area ja perimeter, sekä yksinkertainen Circle. Näin tarkistetaan, että jaettu API toimii yhdellä konkreettisella tyypillä.
public class Main {
// Minimal API sketch to validate the design
static abstract class Shape {
abstract double area();
abstract double perimeter();
}
static class Circle extends Shape {
double radius;
Circle(double r) { radius = r; }
double area() { return Math.PI * radius * radius; }
double perimeter() { return 2 * Math.PI * radius; }
}
public static void main(String[] args) {
Shape s = new Circle(2.0);
System.out.println("area=" + s.area());
System.out.println("perimeter=" + s.perimeter());
}
}
Kokoelmat ja raportointi
Tallennamme myöhemmin muodot listaan ja tulostamme yhteenvedot, kuten tyypin, alan ja piirin. Pieni muotoilija pitää tulosteen luettavana mobiililaitteella: yksi muoto riville ja luvut pyöristettynä kahden desimaalin tarkkuuteen.
Koodi: muotojen lista
Prototyyppi 2: Yhdistetään Circle ja Rectangle samaan Shape-taulukkoon ja tulostetaan jokainen alkio. Perusluokan metodit mahdollistavat yhdenmukaisen käsittelyn eli polymorfismin.
public class Main {
static abstract class Shape {
abstract double area();
abstract double perimeter();
String info() {
// default helper for neat printing
return String.format("area=%.2f, per=%.2f", area(), perimeter());
}
}
static class Circle extends Shape {
double radius;
Circle(double r) { radius = r; }
double area() { return Math.PI * radius * radius; }
double perimeter() { return 2 * Math.PI * radius; }
public String toString() { return "Circle " + info(); }
}
static class Rectangle extends Shape {
double w, h;
Rectangle(double w, double h) { this.w = w; this.h = h; }
double area() { return w * h; }
double perimeter() { return 2 * (w + h); }
public String toString() { return "Rectangle " + info(); }
}
public static void main(String[] args) {
Shape[] arr = { new Circle(2.0), new Rectangle(3.0, 4.0) };
for (int i = 0; i < arr.length; i = i + 1) {
System.out.println(arr[i]);
}
}
}
Perusrakenteen tarkistus
Pikatarkistus: Mitkä asiat kuuluvat tämän projektin abstraktiin Shape-perusluokkaan?
Kertaus
Kertaus: Perusluokka ilmoittaa area- ja perimeter-metodit. Aliluokat tallentavat muotokohtaiset tiedot ja toteuttavat laskennan. Shape-listojen avulla voimme tulostaa eri muotoja yhdellä silmukalla.
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 ”Suunnittelu” ilmainen?
Kyllä – oppitunnin ”Suunnittelu” 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 ”Suunnittelu”?
Suunnitelkaa hierarkia: valitkaa abstrakti perusluokka, luetelkaa konkreettiset muodot, valitkaa kentät ja metodit sekä määrittäkää yksinkertaiset polymorfiset operaatiot. 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 1/3.
Kuinka kauan ”Suunnittelu”-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
- Suunnittelu
- Toteutus
- Polymorfiset toiminnallisuudet