Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Objektorientert design i iOS er en annen måte å designe programmer på, hvor oppførelsen er knyttet til objekter. For å illustrere, vurder å undersøke handlingene som er involvert i å lage te og suppe. Men ikke umiddelbart hopp i handling i stedet, oppfør deg som en detektiv som går inn i en forbrytelsesscene. Gå tilbake, undersøk domenet (kjøkkenet), og prøv å forstå hva som er i det. Med andre ord, tenk objekter første .
-
Du ser en vannkoker. Du vurderer kjelen for en stund og så si: "Jeg kan legge vann til det; Jeg kan hælde vann fra det. "
-
Du ser på en tekanne. Som det ser tilbake, tenker du, "Jeg kan også legge til vann til dette og hente vann fra det, så vel som jeg kan med en vannkoker. "
Både vannkoker og tekanne ser ut til å kunne ta inn og hente ut vann. De har begge også staten (vannet holdes). Derfor generaliserer du at hvert av disse objektene er et fartøy. Du tenker også på egenskapene til disse objektene, det vil si deres egenskaper - for eksempel volum, farge og materiale.
Du tenker på de andre elementene på kjøkkenet, nemlig komfyren, kranen, koppene og boller, de forskjellige slags skjeer og matvarer: suppe, te og bouillon, selv kjøkkenklokken. Du tenker også på deres evner. Du prøver å generalisere typer objekter i høyere begreper, for eksempel fartøy.
I stedet for å tenke på en oppskrift bare som en rekke handlinger, skjønner du at en oppskrift også er et objekt. Tross alt kan du lage oppskrifter, rive opp oppskrifter og dele oppskrifter. En oppskrift er faktisk noe håndgripelig; Derfor er det et objekt, et objekt med evner. Når du følger en oppskrift, kan du forestille deg at du kjører den.
Så gjør du kjøre en mulighet for en oppskrift. Du lager også oppsett og rydder opp ansvar for et oppskriftobjekt. Har en oppskrift attributter? Hva med forfatteren hans (en streng )? Eller hvor mange tjener det (et heltall )? Endelig har oppskrifter klart et generaliseringshierarki med Making Tea og Making Soup som spesialiseringer av en generisk Oppskrift.
Tabellen nedenfor viser ulike typer objekter, deres evner, deres attributter og deres generaliseringer.
Type objekt | Muligheter | Attributter | Generaliseringer |
---|---|---|---|
Fartøy | Tilsett væske; Fyll ut væske | Farge, farge, materiale | |
Tekanne | Fartøyets egenskaper (det vil si Legg til og helling) | Fartøyets egenskaper | Fartøy |
Tureen | Alle kapasitetene til et fartøy | Attributtene til et fartøy | Fartøy |
Vannkoker | Alle kapasitetene til et fartøy; Kok | En fartøys attributter | Fartøy |
Cup | Alle kapasitetene til et fartøy; Drikk fra | Attributtene til et fartøy | Fartøy; Du kan drikke fra |
Bowl | Alle mulighetene til et fartøy; Spis med skje | Attributtene til et fartøy | Fartøy; Du kan konsumere væsker det holder, med en skje |
Komfyr | Sett et fartøy på; Slå på; Skru av; Angi nivå | Farge | |
Kran | Åpne; Lukk | Farge | |
Te | Bratt | Type | Matvare |
Bouillon | Bratt | Smaken | Matvare |
Klokke | Vent | ||
Oppskrift | Sett opp; Løpe; Rengjør | Vanskelighetsgrad; skaperen; Antall personer som serveres | |
Gjør te | Oppskriftens ansvar | Attributter til en oppskrift; Antall kopper | Oppskrift |
Gjør suppe | Ansvar for en oppskrift | Attributter til en oppskrift; Antall skåler | Oppskrift |
En oppføring som Alle mulighetene av et fartøy for Cup-objektet betyr at en Cup forstås automatisk å ha tilleggsvæsken og hente ut evner fordi det er et fartøy.I tillegg har en kopp drikke fra evnen. Med andre ord kan du gjøre mer med en kopp enn du kan med en vanlig gammel fartøy.
For å si det i OO-terminologi, er et fartøy en generalisering av en kopp, mens en kopp er en spesialisering på et fartøy.
Objektorientert MakeTea Oppskrift
@interface TeaRecipe: Oppskrift // Gjøre te er en slags oppskrift @ implementering TeaRecipe + Setup; {…} // Setter opp oppskriften + Kjør: (int) NumberOfCups; {// dette er en instansmetode NSArray * TeaCups; // Deklar en rekke kopper [Kran åpen] [Kettle AddLiquid: (NumberOfCups * CUPVOLUME)]; [Komfyr PutVesselOn: Kettle]; [Stove TurnOn]; For (i = 1; i <= numberOfCups; i ++) {[TeaPot Legg til: Tea Quantity: @ "1 skje"];} Mens (! [Kettle IsBoiling]); // Fortsett å løse til vannet koker [Kettle PourWaterFrom: Tekanne]; [Klokke vent: @ "5 minutter"]; For (i = 1; i <= numberOfCups; i ++) [Kettle Pour: [TeaCups objectAtIndex: i]]; NSLog ("Enjoy Tea");} // End MakeTea + Opprydding; {…} // rydder opp etter oppskriften -d
Du lager to kopper te med dette programmet:
MakeTea teaRecipeInstance = [[TeaRecipe allokering]; [teRecipeInstance Setup]; [teRecipeInstance Run: 2]; [teRecipeInstance Cleanup];