Menu
Coddy logo textTech

Klasa prostokąta

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

challenge icon

Wyzwanie

Łatwy

Teraz rozbudujemy nasz Shape Manager, tworząc klasę Rectangle, która dziedziczy po klasie bazowej Shape, utworzonej przez Ciebie w poprzedniej lekcji.

Będziesz pracować z trzema plikami, aby zachować porządek w kodzie:

  • Shape.lua: Twoja bazowa klasa Shape z poprzedniego wyzwania (z metodami :new(name) i :getName()).
  • Rectangle.lua: Utwórz klasę Rectangle, która dziedziczy po Shape. Konstruktor powinien przyjmować width i height, wywoływać konstruktor klasy nadrzędnej z nazwą "Rectangle" i przechowywać wymiary. Dodaj metodę :getArea(), która oblicza i zwraca pole prostokąta.
  • main.lua: Załaduj moduł Rectangle, odczytaj szerokość i wysokość z wejścia, utwórz instancję Rectangle i wypisz jej nazwę, a następnie pole, w osobnych wierszach.

Pamiętaj, aby poprawnie skonfigurować dziedziczenie, tak by instancje Rectangle mogły uzyskiwać dostęp do metod Shape poprzez łańcuch prototypów.

Wejście: Dwa wiersze: pierwszy zawierający szerokość (liczbę), drugi zawierający wysokość (liczbę).

Wyjście: Dwa wiersze: nazwa prostokąta zwrócona przez :getName(), a następnie jego pole zwrócone przez :getArea().

Spróbuj swoich sił

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

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

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

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

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online