Menu
Coddy logo textTech

Klasa koła

Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 57 z 70.

challenge icon

Wyzwanie

Łatwy

Kontynuujmy budowanie naszego Shape Managera, dodając klasę Circle obok klasy Rectangle utworzonej w poprzedniej lekcji.

Będziesz pracować z czterema plikami, aby uporządkować swoje kształty:

  • Shape.lua: podstawowa klasa Shape z metodami :new(name) i :getName().
  • Rectangle.lua: klasa Rectangle z poprzedniego wyzwania, zawierająca metodę :getArea().
  • Circle.lua: utwórz klasę Circle dziedziczącą po Shape. Konstruktor powinien przyjmować radius, wywoływać konstruktor klasy nadrzędnej z nazwą "Circle" i zapisywać promień. Dodaj metodę :getArea(), która oblicza pole koła według wzoru πr². Użyj math.pi jako wartości π.
  • main.lua: załaduj moduły Rectangle i Circle. Odczytaj z wejścia trzy wartości: szerokość prostokąta, wysokość prostokąta i promień koła. Utwórz po jednej instancji każdego kształtu i wypisz cztery wiersze: nazwę prostokąta, pole prostokąta, nazwę koła i pole koła.

Oba kształty mają teraz wspólny interfejs dzięki dziedziczeniu: każdy ma metodę :getName() z klasy Shape i własną implementację metody :getArea(). Ten wspólny interfejs przyda się w kolejnych lekcjach.

Wejście: Trzy wiersze: szerokość (liczba), wysokość (liczba) i promień (liczba).

Wyjście: Cztery wiersze: nazwa prostokąta, pole prostokąta, nazwa koła i pole koła.

Spróbuj swoich sił

-- Załaduj moduł Rectangle
local Rectangle = require('Rectangle')

-- Załaduj moduł Circle
-- TODO: Załaduj tutaj moduł Circle

-- Odczytaj szerokość i wysokość z wejścia
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: Odczytaj promień z wejścia

-- Utwórz nową instancję Rectangle o podanych wymiarach
local rect = Rectangle:new(width, height)

-- TODO: Utwórz nową instancję Circle o podanym promieniu

-- Wypisz nazwę i pole prostokąta
print(rect:getName())
print(rect:getArea())

-- TODO: Wypisz nazwę i pole koła

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online