Java Academy · Oppitunti

Suunnittelu

Suunnitelkaa hierarkia: valitkaa abstrakti perusluokka, luetelkaa konkreettiset muodot, valitkaa kentät ja metodit sekä määrittäkää yksinkertaiset polymorfiset operaatiot.

Oppitunti 1/38 vaihetta

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.

Aloita maksutta

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

  1. Suunnittelu
  2. Toteutus
  3. Polymorfiset toiminnallisuudet
← Takaisin: Java Academy