hoppa över det här avsnittet om du är bekant med objektorienterad programmering.
Objective-C programmering bygger på begreppet kod som representerar verkliga objekt. Representationer av programmatiska objekt kan sträcka sig från strängar (representation av text—en sträng av tecken), till etiketter, till och med människor. I mål-C är objekt medlemmar i sina klasser. Ett enskilt objekt, eller representation av en klass, kallas en instans av den klassen. Varje instans av en klass har egenskaper, saker som definierar och karakteriserar den., Dessutom har varje instans metoder, eller saker det kan göra. Det här är ganska förvirrande för en nybörjare, så jag ska förklara dessa begrepp med ett verkligt exempel-vad sägs om människor.
Du och jag är alla en person. Vi har miljontals egenskaper som definierar oss, men vi är båda människor. Vi har ögon, öron, personligheter, smak och så vidare. Dessutom kan vi alla göra saker. Vi kan uttrycka känslor, sjunga sånger, skratta … du får bilden. Så om vi skulle karakterisera oss programmatiskt kan vi säga att vår klass är Person., Våra egenskaper, såsom ögonfärg, hårfärg och favorit typ av bil, är egenskaper. Slutligen är våra förmågor, som att prata, skratta och koda, metoder.
programmerare skapar klasser för att hantera förhållandet mellan vad datorn gör och vad de vill åstadkomma i det verkliga livet. En utvecklare kan skapa en PickupTruck klass för att representera en lastbil i sitt program., I programmet kunde han skapa en instans av PickupTruck, med egenskaper som färg, produktionsår och sängstorlek. Dessutom kan han få lastbilen att göra saker, som att köra, tanka och sakta ner. Möjligheterna är oändliga.
klasshierarki och arv
objektorienterad programmering komplicerar med idéerna om klasshierarki och arv. Klasshierarki är uppfattningen att en klass kan härleda dess egenskaper och metoder från sin förälder eller superklass, samtidigt som man kan implementera nya egenskaper och metoder., Arv är bara en annan term för klasshierarki—en dotterklass ärver egenskaper och metoder från sin moderklass. För att förklara vidare lägger jag till mitt pickup truck-exempel.
låt oss börja med PickupTruck klassen. Den har grundläggande egenskaper (kapacitet, produktionsår och sängstorlek) och förmågor (kör, tanka och sakta ner). Precis som att kalla ett fordon en pickup truck i verkliga livet är en generalisering, en instans av PickupTruck i vårt exempel är ganska allmänt också.
låt oss nu lägga till en dotterklass—FordPickupTruck., Det kommer att ärva alla egenskaper hos PickupTruck, eftersom den har en färg, produktionsår och sängstorlek. Dessutom ärver det metoderna för PickupTruck-det kan köra, tanka och sakta ner. Men eftersom FordPickupTruck är en mer specifik representation, har den fler egenskaper och metoder. En instans av FordPickupTruck kommer att ha ett modellnamn—ett drag för specifikt för en allmän PickupTruck. Vi kan också lägga till en förmåga, låt oss säga en instans av FordPickupTruck kan bogsera, något som inte alla PickupTrucks kan göra.,
en överordnad klass kan ha ett obegränsat antal dotterklasser, vilket i sin tur kan alla ha ett obegränsat antal dotterklasser och så vidare. En klass ’ arv mönster kan vara linjär, eller det kan förgrena sig oändligt.,
programmatiskt kan klasshierarki och arv verka förvirrande. Men om du ger dem verkliga exempel blir de mycket enklare,och därmed kommer du att kunna förstå dem mer. Detta gäller för många svåra begrepp inom datavetenskap.