Jeśli znasz programowanie obiektowe, pomiń tę sekcję.
Programowanie Objective-C opiera się na koncepcji kodu reprezentującego rzeczywiste obiekty. Reprezentacje obiektów programowych mogą obejmować ciągi znaków (reprezentacja tekstu-ciąg znaków), etykiety, a nawet osoby. W Objective-C obiekty są członkami swoich klas. Pojedynczy obiekt lub reprezentacja klasy nazywa się instancją tej klasy. Każda instancja klasy ma właściwości, rzeczy, które ją definiują i charakteryzują., Dodatkowo każda instancja ma metody lub rzeczy, które może zrobić. To wszystko jest dość mylące dla początkujących, więc wyjaśnię te pojęcia na prawdziwym przykładzie-jak o ludziach.
ty i ja jesteśmy sobą. Mamy miliony cech, które nas definiują, ale oboje jesteśmy ludźmi. Mamy oczy, uszy, osobowości, gusta itd. Dodatkowo wszyscy możemy robić różne rzeczy. Możemy wyrażać emocje, śpiewać piosenki, śmiać się … Gdybyśmy więc mieli scharakteryzować siebie programowo, moglibyśmy powiedzieć, że nasza klasa jest osobą., Nasze cechy, takie jak kolor oczu, kolor włosów i ulubiony typ samochodu, są właściwościami. Wreszcie, nasze zdolności, takie jak mówienie, śmiech i kodowanie, są metodami.
programiści tworzą klasy w celu zarządzania relacją między tym, co robi komputer, a tym, co chcą osiągnąć w prawdziwym życiu. Programista może utworzyć klasę PickupTruck, aby reprezentować ciężarówkę w swoim programie., W programie mógł stworzyć instancję Pickuptrucka, o właściwościach takich jak kolor, Rok produkcji i rozmiar łóżka. Dodatkowo może sprawić, że ciężarówka będzie robić rzeczy, takie jak jazda, tankowanie i spowolnienie. Możliwości są nieograniczone.
hierarchia klas i dziedziczenie
Programowanie obiektowe komplikuje idee hierarchii klas i dziedziczenia. Hierarchia klas jest pojęciem, że klasa może czerpać swoje właściwości i metody ze swojej nadrzędnej lub nadrzędnej klasy, jednocześnie będąc w stanie zaimplementować nowe właściwości i metody., Dziedziczenie to kolejny termin hierarchii klas—Klasa córka dziedziczy właściwości i metody ze swojej klasy macierzystej. Aby wyjaśnić dalej, dołączę mój przykład pickupa.
Zacznijmy od klasy Pickuptrucka. Ma podstawowe cechy (pojemność, Rok produkcji i wielkość łóżka) i umiejętności (napęd, tankowanie i spowolnienie). Podobnie jak nazywanie pojazdu pickupem w prawdziwym życiu jest uogólnieniem, przykład Pickuptrucka w naszym przykładzie jest również dość ogólny.
teraz dodajmy klasę córek—FordPickupTruck., Odziedziczy wszystkie właściwości Pickuptrucka, ponieważ ma kolor, Rok produkcji i rozmiar łóżka. Dodatkowo dziedziczy metody Pickuptrucka – potrafi jeździć, tankować i zwalniać. Ale ponieważ fordpickuptruck jest bardziej specyficzną reprezentacją, ma więcej właściwości i metod. Instancja Fordpickuptruck będzie miała nazwę modelu—cechę zbyt specyficzną dla ogólnego Pickuptrucka. Możemy również dodać możliwość, powiedzmy przykład fordpickuptruck może holować, coś, co nie wszystkie PickupTrucks mogą zrobić.,
Klasa rodzica może mieć nieograniczoną liczbę klas córek, które z kolei mogą mieć nieograniczoną liczbę klas córek i tak dalej. Wzorzec dziedziczenia klasy może być liniowy lub może się rozgałęziać w nieskończoność.,
programowo hierarchia klas i dziedziczenie mogą wydawać się mylące. Jeśli jednak podasz im prawdziwe przykłady, staną się one znacznie prostsze, a tym samym będziesz w stanie je lepiej zrozumieć. Dotyczy to wielu trudnych pojęć w informatyce.