Objective-C. Ina Carine Aarvig

Like dokumenter
Objective-C. Ina Carine Aarvig

Objective-C. Shermila Thillaiampalam

Hei verden. Introduksjon. Steg 1: Sette opp Xcode. Skrevet av: Andreas Amundsen

Hei verden Introduksjon Swift PDF

Verden. Steg 1: Vinduet. Introduksjon

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

TDT4102 Prosedyreog objektorientert programmering Vår 2016

INF1010 MVC i tekstbaserte programmer

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

UNIVERSITETET I OSLO

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Testsituasjon Resultat Kommentar. Fungerer som det skal!

Kjørehjelperen Testdokumentasjon

Forprosjekt gruppe 13

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Steg 1: Lag bildedeklarasjon

IN1010 V19, Obligatorisk oppgave 2

2 Om statiske variable/konstanter og statiske metoder.

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Kom i gang med Python

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

UNIVERSITETET I OSLO

Programmering i C++ Løsningsforslag Eksamen høsten 2005

1. NetBeans IDE: Lage en enkel mobilapplikasjon

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

Oppdatering til boka: Programmering i ActionScript 3.0 Flash CS3 Professional

Nedlasting av apper på Apple

Komme igang med App Inventor Introduksjon App Inventor PDF

notater Gule lapper Mine Et praktisk eksempel med objekter IT2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Utvikle en prototype for en digital versjon av helsekort for gravide. Programvareleverandør av ehelse-løsninger for helsevesenet

Qt Jambi E t R ammeverks His torie

INF1010 våren januar. Objektorientering i Java

CORBA Component Model (CCM)

Enkle generiske klasser i Java

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

Breakout. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle og Martin Lie

AlgDat 12. Forelesning 2. Gunnar Misund

AlgDat 10. Forelesning 2. Gunnar Misund

Objektorientert programmering i Python

Debugging. Tore Berg Hansen, TISIP

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

JavaScriptbibliotek. Introduksjon MVVC. Informasjonsteknologi 2. Gløer Olav Langslet Sandvika VGS

Mangelen på Internett adresser.

Introduksjon til programmering og programmeringsspråk

Last ned iphone boka - Bjørn Eirik Loftås. Last ned

Last ned iphone boka - Bjørn Eirik Loftås. Last ned. Last ned e-bok ny norsk iphone boka Gratis boken Pdf, ibook, Kindle, Txt, Doc, Mobi

UNIVERSITETET I OSLO

Steg 1: Hvordan fungerer spillet?

Introduksjon til objektorientert programmering

KONICA MINOLTA LØSNINGER FOR MOBIL UTSKRIFT

Tips og triks nettbrett (ios og Android) Kristiansand folkebibliotek

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Hvordan man kobler til printeren, laster ned CardPresso, installerer skrifttypen og får kommet i gang med produktet.

Sprettball Erfaren ComputerCraft PDF

INNFØRING I PRINSIPPER FOR OBJEKTORIENTERT PROGRAMMERING EMILIE HALLGREN OG KRISTIN BRÆNDEN

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

IN1010 våren januar. Objektorientering i Java

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...

Steg 1: Piler og knappetrykk

TDT4165 PROGRAMMING LANGUAGES. Exercise 02 Togvogn-skifting

3 Filstruktur. Slik ser filstrukturen til applikasjonen ut når den er lagt ut på server eller når den er deployet.

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Steg 1: Sette opp Java-prosjekt, og lage app-mappe og app-klasse

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

Finn en partner å prøve spillet sammen med. Det er OK å være tre personer og bytte på hvilke to som spiller.

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Smarttelefoner og nettbrett. En veileder

Administrering av SafariSøk

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

Seminaroppgaver IN1010, uke 2

IN1000 Obligatorisk innlevering 7

Test 2 OOP. - Prøveeksamen

Endret litt som ukeoppgave i INF1010 våren 2004

Berøringsskjerm - og hva så?

LocalBank Prosjektbeskrivelse

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Transkript:

Objective-C Ina Carine Aarvig 16.10.2011

Innhold 1 Objective-Cs historie 4 1.1 NeXT og Steve Jobs........................ 4 1.2 Apple................................ 4 2 Xcode 5 3 Objective-C 6 3.1 Objekter, klasser og metoder................... 6 3.1.1 Objekter.......................... 6 3.1.2 Klasser........................... 6 3.1.3 Metoder........................... 7 3.2 Arv, kategorier og interface.................... 7 3.2.1 Arv............................. 7 3.2.2 Kategorier.......................... 7 3.2.3 Interface........................... 7 3.3 Model-View-Controller....................... 7 3.4 Minnehåndtering.......................... 8 4 Utprøvninger 9 4.1 Enkle tester............................. 9 4.2 Color Swapper........................... 9 4.3 TicTacToe.............................. 10 5 Avsluttning 11 5.1 Ressurser.............................. 11 Bibliografi 12 2

Innledning Bruken av smarttelefoner og nettbrett har vokst kraftig de siste årene, og dermed har det også blitt et bredt utvalg av applikasjoner. Spesielt nettbrettet har vokst mye etter at Apple kom ut med sin første ipad, og nå også ipad 2. I Apples App Store kan en finne et bredt utvalg av applikasjoner, og det finnes så mange som over 500 000 stykker. Alt fra for eksempel spill, musikk, skole og helse kan man finne applikasjoner om. Og det er nettopp i disse applikasjonene hvor Objective-C brukes for å kunne utvikle dem. 3

Objective-Cs historie Objective-C, ble først laget tidlig på 1980- tallet av Brad Cox og Tom Love, og har hatt en lang historie [2]. Programmeringsspråket stammer fra C, som er et ikke objektorientert språk. Et objektorientert språk går ut på å bruke/lage objekter som inneholder klart definert kode som kan fungere selvstendig, men også i større komplekse systemer hvor det er flere objekter som snakker sammen. Smaltalk var et av de første objektorientere programmeringsspråkene, og det er dette språket Objective-C bruker elementer fra. Objective-C er et lite men kraftfullt tillegg til C.[1] 1.1 NeXT og Steve Jobs I slutten av 1980- tallet fikk NeXT og Steve Jobs rettighetene til Objective-C, hvor de fortsatte å utvide språket til å være ett av hovedspråkene i operativsystemet deres kalt NeXTStep [2]. Dette operativsystemet er det som har lagt grunnlaget for Apples Mac OS X, og dermed tatt med seg bruken av Objective- C videre. Senere har det også blitt tilpasset til et mobilt operativsystem kalt ios som i dag blir brukt på både iphone, ipad og ipod. [3] 1.2 Apple Steve Jobs var med på å grunnlegge Apple men ble etterhvert dyttet ut av selskapet. Etter at han forlot Apple startet han bedriften NeXT, som etterhvert utviklet operativsystemet NeXTStep. På 1990- tallet hadde Apple problemer med å utvikle et nytt operativsystem for å erstatte MacOS, som begynte å bli for utdatert. Apple slet også en del på markedet i denne perioden. Etter en del mislykkede forsøk, ble de nødt til å få tak i en bedrift som allerede hadde et operativsystem. Det var I 1997 hvor Apple fikk tak i NeXT og operativsystemet deres, og igjen så var Steve Jobs tilbake i Apple. [3] 4

Xcode En av de vanligste utviklingspakkene for Objective-C er Xcode. Dette er Apples egen pakke som inneholder alt en trenger for å sette i gang for å utvikle applikasjoner til både Mac OS X og ios. Noe av det den inneholder er en simulator som viser hvordan applikasjonene vil se ut og fungere, og en interface builder hvor man kan sette opp et grafiskgrensesnitt. Den nyeste versjonen av Xcode kan nå lastes ned gratis uten at man behøver å være medlem av Apples utvikler program. Men for å kunne teste ut sine applikasjoner på en ipad/iphone, er man nødt til å bli medlem. Dette koster rundt 570 kroner i året (99 dollar), hvor man i tillegg vil få muligheten til å legge ut sine applikasjoner på App Store. Figur 2.1: Dette bildet viser hvordan brukergrensesnittet til Xcode kan se ut. 5

Objective-C Objetive-C et objektorientert programmeringsspråk, som vil si at man bruker flere objekter som inneholder metoder og datastrukturer. Disse objektene kan opptre selvstendig eller være del av et større og kompleks system. For å kommunisere med andre bruker de noe som kalles for metoder. Disse kan endre eller utlevere data om objektet etter hva man ønsker å gjøre. Det som definerer hvordan et objekt skal se ut er det som kalles for klasser. Klassene beskriver hvordan objektet skal oppføre seg og hvilke egenskaper de skal ha. 3.1 Objekter, klasser og metoder 3.1.1 Objekter Et objekt inneholder strukturert data (instans variabler) og metoder som kan bruke eller endre objektets data. Et objekt kan sees på som en fullstendig og selvstendig programmeringsenhet. Den inneholder alle de delene den trenger for å være hel og er ikke avhengig av andre. For at andre skal få innformasjon om et objekt, må det være en metode som gir denne innformasjonen. [1] Feks - Et rektangel objekt vil ha en metode som sier noe om størrelsen. Et objekt har bare tilgang til sine egne metoder og kan ikke bruke metodene til andre objekter. Det gjemmer sine instans variabler og metoder i seg selv, akkurat som en funksjon som gjemmer sine lokale variabler fra resten av programmet. [1] 3.1.2 Klasser En klasse er en arbeidstegning for et objekt. Den forteller hva slags egenskaper og hvordan det skal oppføre seg. Endrer man på klassen vil alle dens instanser av objekter endre seg. Endrer man derimot på en av instansene, vil ikke dette ha noen effekt på de andre objektene. I Objective-C består en klasse av to filer, en header fil (.h) og en main fil (.m). Header fila er den som definerer og setter egenskapene på de metodene og variablene som skal implementeres i main fila. Det er også i denne filen hvor man bestemmer om klassen skal arve eller være en kategori til en annen klasse. 6

3.1.3 Metoder Metoder er det som blir brukt for å kommunisere i mellom flere objekter, og det å endre et objekts data eller å hente det ut. Det å sende en beskjed til et objekt, skrives ofte slik [mottaker beskjed]. Her er mottakeren det objektet som skal få beskjed om å gjøre noe, altså utføre en metode som det blir kalt på (beskjeden). Når man skal kalle på en metode som har flere parametere skrives det ofte slik: [mittobjekt leggsammentallet:4 medtallet:5]. Det er også mulig at et parameter kan ta imot flere parametere. Ved å gjøre dette skiller man de med et komma. Disse parameterne vil ikke være en del av navnet på metoden, og det er heller ikke nødvendig å sende inn argumenter for disse utenom det første. De er valgfrie å ha med. Videre kan man også sende inn ett nytt metode kall som et argument for et parameter, et eksempel på dette er: [mittobjekt settfargentil: [mittandresobjekt farge]] Det er mulig for variabler og metoder å ha et likt navn. [1] 3.2 Arv, kategorier og interface 3.2.1 Arv Klasser kan arve fra andre klasser, slik at de får deres egenskaper og metoder. En klasse kan bare arve fra en annen klasse, men en klasse kan ha flere forskjellige klasser som arver fra den. Klassen som arver i fra en annen klasse kalles for underklasse, mens den det arves i fra kalles for en superklasse/foreldreklasse. Arv kan sees på som strukturer eller hierarkier av klasser som deler noen egenskaper. Måten dette skrives på i Objective-C er følgende: @interface TicTacToe : NS- Object. Det som skjer her er at klassen TicTacToe skal arve fra en annen klasse som heter NSObject. På denne måten vil TicTacToe klassen få alle egenskapene og metodene til NSObject. Men det betyr ikke at TicTacToe klassen ikke kan endre på metodene eller egenskapene den arver. En underklasse kan legge til sine egne metoder, men også endre på de den arver. 3.2.2 Kategorier 3.2.3 Interface Et interface sier noe om hvordan det brukeren ser skal se ut og inneholde. Det kan implementeres av flere klasser, men en klasse kan bare ha et interface. Klassen som implementerer et interface må da også implementere de metodene interfacet inneholder. 3.3 Model-View-Controller Model-View-Controller (MVC) går ut på å separere et View fra en Modell, og hvor man bruker en Controller for å kommunisere mellom disse. Et View er det som består av de UI elementene som skal vises og har en fil endelse på.xib. Modellen er den som inneholder de dataene og den innformasjonen som skal brukes. Noen eksempler på dette kan for eksempel være en database, en klasse eller en strukturert XML fil. Controlleren er en klasse som håndterer 7

hvordan et View og en Model skal snakke sammen, og har dermed jobben med å oppdatere modellen og viewet. Når man opperetter en controller klasse er det vanlig å ha med ordet ViewController som en del av klassenavnet. 3.4 Minnehåndtering I ios versjonene som er tidligere enn versjon 5, må man administrere minnet selv da det ikke finnes noen garbage collection. Det som er vanlig å gjøre er at hver gang man kaller metoden alloc på et objekt, må man også kalle på metoden release. Metoden alloc ber om å få frigjort nok minne til oppretting av objektet det kalles på. Release metoden fungerer da på motsatt måte, at den fjerner objektet fra minnet slik at det ikke skal skje noen minnelekkasjer. 8

Utprøvninger Dette kapittelet tar for seg de testene som har blitt gjort underveis i fordypningen i Objective-C. Isteden for at all kode står her, ligger de i en mappe ved siden av som det er lenket til på hovedsiden. De neste underkapitlene inneholder beskrivelse på hva testene går ut på og hva det er som skjer, med forklaring av kodeeksempler. 4.1 Enkle tester Fleste av de enkle testene som ble gjort gikk ut på å plassere ut grensesnitt objekter grafisk, men også ved å bruke bare kode. Det var også forskjellige typer av Hello World programmet som er vanlig gjennomføre i de fleste programmeringsspråk. 4.2 Color Swapper Denne applikasjonen går ut på å koble seg opp mot Bonjour ved å bruke URL n til en Mac. Det den så gjør, ved hjelp av linken som inneholder en RGB kode, er å bytte farge i vinduet til en applikasjon som heter Kameleon. Det grafiske grensesnittet i Color Swapper er satt opp slik at den har et tekstfelt for å motta en URL, og tre knapper som hver har sin egen farge. Koden som er under viser noe av det som skjer når brukeren sender inn sin URL etter å trykke på en av knappene. NSURL *url = [[NSURL alloc] initwithstring:stringurl]; NSURLRequest *urlrequest = [[NSURLRequest alloc] initwithurl:url]; NSURLConnection *urlconnection = [[NSURLConnection alloc] initwithrequest:urlrequest delegate:self startimmediately:yes]; Det som skjer her, er at det først blir opprettet et URL med en tekststreng. Tekststrengen er den som brukeren skrev inn. Deretter blir det opprettet et URLRequest objekt med URL objektet, og så til slutt en URLConnection med forespørselobjektet. Det er URLConnection objektet som blir brukt videre for å sette opp tilkoblingen som sender forespørselen om å endre farge i Kameleon applikasjonen. Denne Color Swapper applikasjonen er enkel men ga en god trening på det å bruke en URL og sette opp en forbindelse. 9

4.3 TicTacToe Denne applikasjonen ble gjort ved å følge et av tutorialene til Wibit.net, og er rett å slett en enkel versjon av tre på rad spillet. Den går ut på at det er to spillere som spiller på den samme iphonen, eller at en spiller kan spille mot en kunstig spiller. Figur 4.1: Dette bildet viser hvordan TicTacToe appen ser ut, og hvordan simulatoren fungerer. Det første som ble gjort var å opprette den klassen som tar for seg reglene og hvordan brettet skal fungere i spillet. Eksempel på en kode bit her, er hvordan man finner ut av hvem sin tur det er. - (char) whoseturn { if(_movecount % 2) { return O ; } return X ; } Det som skjer her er at vi har en metode som heter whoseturn, som skal returnere en karakter (char). Karakteren vil representere hvilken spiller det er. X er for den spilleren som starter og O er spiller nummer to. Det metoden gjør er å kjøre en if-test på om variabelen _movecount blir et oddetall når man tar modulus to. Er den det vil det være spiller to sin tur og O returneres. Hvis det er partall er det X som returneres. 10

Avsluttning Det å ha en forståelse av objektorientert programmering fra før av har hjulpet veldig med å forstå Objective-C. Men likevel har det vært vanskelig, da det er noe annerledes enn for eksempel Java. Det som har vært vanskelig er hvordan syntaksen i språket er, men også det å vite hva som er tilgjengelig av metoder og objekter. Og selvsagt, er det å måtte håndtere minnet selv en av de største utfordringene. Men det er noe som er viktig å kunne selv om det nå i ios 5 finnes en enklere måte å gjøre dette på. Forståelsen for Objective-C har helt klart blitt bedre, men det er likevel mye som gjenstår å lære seg. I denne fordypningen ble det sett på det grunnleggende, og ikke så veldig dypt inn på hvert enkelt tema. 5.1 Ressurser Her er de ressursene som ble brukt underveis for å lære Objective-C. Den ressursen som har vært veldig lærerik er et tutorial som består av flere videoer som tar for seg det meste innenfor Objective-C. Denne siden heter Wibit.net og her er det en link rett til Wibit.nets Objective-C tutorial En annen side som har hjulpet litt, men ikke like mye som forrige, er en blogg som inneholder mange tutorials for nybegynnere og de med litt mer erfaring. Denne siden er ikke like oppdatert på de siste versjonene av Objective-C, men har likevel vært nyttig. Icecodeblog.com tutorial 11

Bibliografi [1] Apple Inc. The objective-c programming language, 2011. URL http://developer.apple.com/library/mac/#documentation/cocoa/ Conceptual/ObjectiveC/Introduction/introObjectiveC.html. [2] Apple Inc. Object-oriented programming with objective-c, 2011. URL https://developer.apple.com/library/ios/#documentation/cocoa/ Conceptual/OOP_ObjC/Introduction/Introduction.html. [3] Neil Smyth. The history of objective-c, 2011. URL http://www. techotopia.com/index.php/the_history_of_objective-c. 12