Dodanie innych metod do klasy

Przy próbie rozbudowania funkcjonalności np. punktu ujawnia się kluczowa zaleta użycia klasy takiej jak Point, aniżeli czegoś w stylu prostej pary liczb (7, 6). Możemy dodać metody do klasy, rozbudowujące dostępne operacje na punktach. W przypadku użycia prostej pary liczb do reprezentacji punktu, nie mielibyśmy tej możliwości. Tworzenie klas jak Point sprawia, że program jest uporządkowany i bliższy naszemu rozumowaniu. Jesteśmy w stanie rzeczowo pogrupować operacje i rodzaje danych ich dotyczących przy jednoczesnej możliwości utworzenia wielu instancji o różnych polach.

Metoda zachowuje się jak funkcja, ale jest wywołana dla specyficznej instancji. Np. dla obiektu Turtle nazwanego tess, tess.right(90) sprawia że to obiekt tess wykonuje obrót w prawo o 90stopni. Metody są dostępne przy użyciu operatora kropki.

Dodajmy dwie proste metody, które pozwolą uzyskać informację o położeniu punktu. Metoda getX po wywołaniu zwróci współrzędną x. Jej implementacja powinna być już jasna, gdyż wiemy jak tworzyć funkcje zwracające wartości. Ważne odnotowania jest, że chociaż getX nie wymaga żadnego argumentu do wykonania swojego zadania, wciąż obecny jest składniowo wymagany parametr self. Jak wspomniano wcześniej, wszystkie metody zdefiniowane w klasie, które działają na obiektach tej klasy posiadają self jako pierwszy parametr, który służy jako referencja do konkretnego obiektu. Pozwala to na dostęp do wewnętrznych danych obiektu.




(chp13_classes4)

Metoda getX bezpośrednio zwraca wartość zaszytą w self.x. Innymi słowy, metoda ta ma za zadanie odczytać stan obiektu i zwrócić wartość x. Budowa getY wygląda identycznie.

Następną nową metodą będzie distanceFromOrigin, która podobnie jak poprzednia nie wymaga dodatkowych informacji do swojego działania, ale przeprowadza nieco bardziej skomplikowane wyliczenia.




(chp13_classes5)

Wywołanie distanceFromOrigin bezpośrednio nie zawiera argumentu self. Zasada ta dotyczy wszystkich odwołań do metod. Tylko definicje zawsze będą zawierać jeden dodatkowy parametr, będący odnośnikiem do obiektu.

Następna część - Obiekty jako Argumenty i Parametry