0Pricing
Java Academy · Lekcja

Implementacja

Przekształcą Państwo projekt w działający kod: zdefiniują klasę bazową, zaimplementują konkretne kształty i wyświetlą wyniki z mieszanej listy.

Implementacja to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 3 lekcji w sumie.

Podsumowanie planu

Zaimplementujemy bazową klasę Shape z metodami area() i perimeter(), a następnie dodamy Circle i Rectangle. Nazwy powinny być krótkie, a obliczenia czytelne; do wyświetlania warto używać niewielkich metod pomocniczych.

Kod: klasa bazowa i Circle

Klasa bazowa definiuje API i niewielką metodę pomocniczą info(). Circle implementuje obliczenia oraz toString() na potrzeby czytelnego wyświetlania.

public class Main {
  // Base class with a tiny print helper
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() {
      return String.format("area=%.2f, per=%.2f", area(), perimeter());
    }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) {
      // simple guard to avoid negative sizes for beginners
      radius = (r < 0) ? 0 : r;
    }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }

  public static void main(String[] args) {
    Shape s = new Circle(2.5);
    System.out.println(s); // prints Circle area/perimeter
  }
}

Konstruktory i zabezpieczenia

Konstruktory ustawiają wartości pól. Na potrzeby nauki należy zabezpieczyć kod przed ujemnymi wartościami wejściowymi, ograniczając je do zera. W rzeczywistych aplikacjach stosuje się walidację lub wyjątki, ale tutaj zachowujemy prostotę.

Kod: dodawanie Rectangle

Rectangle dołącza do hierarchii i korzysta z tego samego API. Należy zauważyć, że oba kształty można wyświetlać za pomocą tego samego kodu, ponieważ klasa bazowa definiuje kontrakt.

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : 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 < 0) ? 0 : w;
      this.h = (h < 0) ? 0 : 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 a = new Circle(3.0);
    Shape b = new Rectangle(4.0, 2.0);
    System.out.println(a);
    System.out.println(b);
  }
}

Listy i wyświetlanie

Lista Shape pozwala łączyć obiekty Circle i Rectangle. Prosta pętla może wyświetlić każdy element. W wynikach na urządzeniach mobilnych należy umieszczać jeden kształt w każdym wierszu i formatować liczby do dwóch miejsc po przecinku.

Kod: mały raport

Raport: niewielka pętla wyświetla typ i podsumowanie każdego kształtu. Polimorfizm zapewnia przejrzystość pętli, a każdy kształt dostarcza własne obliczenia.

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String label() { return getClass().getSimpleName(); }
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) { this.w = (w < 0) ? 0 : w; this.h = (h < 0) ? 0 : h; }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
  }

  public static void main(String[] args) {
    Shape[] shapes = { new Circle(1.2), new Rectangle(2.0, 3.0), new Circle(0.5) };
    for (int i = 0; i < shapes.length; i = i + 1) {
      Shape s = shapes[i];
      System.out.println(s.label() + " -> " + s.info());
    }
  }
}

Sprawdzian dotyczący implementacji

Szybkie sprawdzenie: Co jest wymagane dla każdego konkretnego kształtu w tej hierarchii?

Podsumowanie

Podsumowanie: Zaimplementowaliśmy Shape, Circle i Rectangle, dodaliśmy proste zabezpieczenia oraz wyświetliliśmy mały raport z listy zawierającej różne kształty. W następnej lekcji: zachowania polimorficzne, takie jak sortowanie według pola.

Często zadawane pytania

Czy lekcja „Implementacja” jest bezpłatna?

Tak — pełny tekst „Implementacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Implementacja”?

Przekształcą Państwo projekt w działający kod: zdefiniują klasę bazową, zaimplementują konkretne kształty i wyświetlą wyniki z mieszanej listy. Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Implementacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Projektowanie
  2. Implementacja
  3. Zachowania polimorficzne
← Powrót do Java Academy