Apple : iOS

62
APPLE : iOS By RICHARD Eddy

description

Une découverte du langage objectibe-c pour le développement des application iPhone, iPad, iPod...

Transcript of Apple : iOS

Page 1: Apple : iOS

APPLE : iOS

ByRICHARD Eddy

Page 2: Apple : iOS

2

Sommaire

1. Historique iOS

2. L’environnement de développement

3. Historique du langage

4. Comment ça marche ?

5. Questions

Page 3: Apple : iOS

3

HistoriqueLes différentes version iOS

Page 4: Apple : iOS

4

iPhone OS 1

Sortie : 29 juin 2007Sortie SDK : 6 mars 2008

Premier système d’exploitation tactile, sans stylet

Page 5: Apple : iOS

5

iPhone OS 2

Sortie & SDK: 11 juillet 2008

Apparition de l’ App Store

Page 6: Apple : iOS

6

iPhone OS 3

Sortie & SDK : 17 juin 2009

Intégration de MMS Intégration de l’application

native Dictaphone

Page 7: Apple : iOS

7

iOS 4

Sortie & SDK : 21 Juin 2010

MultitâcheFacetime pour passer des

appels vidéos sur le réseau Wifi

Page 8: Apple : iOS

8

iOS 5

Présentation publique : 6 juin 2011

Rendu disponible : 12 octobre 2011

Présence d'un centre de notifications, par l'intégration

de iMessage et de Kiosque

Page 9: Apple : iOS

9

iOS 6

Sortie SDK : 11 juin 2012Sortie : 19 septembre 2012

Récupération de documentsPaiement par mobile

Page 10: Apple : iOS

10

iOS 7

Sortie SDK : 10 juin 2013Sortie : 18 septembre 2013

Musique et la radio dans

iTuneMultitâchesiOs dans la

voiture

AirDrop App StoreAppareil photo

Centre de control

Page 11: Apple : iOS

11

L’environnement de développement

Xcode (version 5.0.2)

Page 12: Apple : iOS

12

Prérequis

Page 13: Apple : iOS

13

Présentation : Xcode

Page 14: Apple : iOS

14

Les perspectives de projet (1/4)

Master-Detail Application

OpenGL Game

Page 15: Apple : iOS

15

Les perspectives de projet (2/4)

Page-Based Application

Single View Application

Page 16: Apple : iOS

16

Les perspectives de projet (3/4)

Tabbed Application

Utility Application

Page 17: Apple : iOS

17

Les perspectives de projet (4/4)

Empty Application

SpriteKit Game

Page 18: Apple : iOS

18

Création de projet

Page 19: Apple : iOS

19

Enregistrement du projet

Page 20: Apple : iOS

20

Historique du langage

L’objective-C

Page 21: Apple : iOS

21

La création

C'est l'américain Brad Cox qui crée l'Objective-C au début des années 80. Il a pour objectif de rajouter des classes au langage C. Pour cela, Cox s'appuie sur un autre langage, le Smalltalk-80, qui est un langage orienté objet créé au début des années 70.

Page 22: Apple : iOS

22

Le développement

L’avantages de NeXTStep une API très performante et orientée objet. Mais la firme NeXT, créée par Steve Jobs. Cela donna un nouveau souffle pour Apple, qui développa un nouveau système d'exploitation pour les Macintosh basé sur NeXTStep. NeXTStep est abandonné, mais les standards du système sont toujours présents dans les frameworks Cocoa et GNUstep.

Page 23: Apple : iOS

23

Le framewok : GNUstep

Une implémentation libre du framework OpenStep. GNUstep fait partie du projet GNU et est inclus dans les dépôts de certaines distributions GNU/Linux.

On le définit souvent comme environnement de bureau ou système d'exploitation, étant donné ses liens au projet NeXTSTEP.

Page 24: Apple : iOS

24

Le framewok : Cocoa Touch

Une API dédiée à l'écriture d'applications pour iPhone, iPod Touch et iPad. Cocoa Touch ne déroge pas à la règle ; elle est spécifiquement développée pour les devices Apple.

Elle est accessible à travers Xcode.

Page 25: Apple : iOS

25

Comment ça marche ?

La mécanique de l’Objective-C

Page 26: Apple : iOS

26

L’objective-C : Définition

L'Objective-C est un langage de programmation orienté objet réflexif.

C'est une extension du C ANSI, comme le C++, mais qui se distingue de ce dernier par sa distribution dynamique des messages, son typage faible ou fort, son typage dynamique et son chargement dynamique.

Page 27: Apple : iOS

27

La syntaxe

L'Objective-C est fait pour être lu et compris directement par le programmeur.

Une comparaison entre deux chaînes de caractères :

C : strcmp(‘maChaine', ‘maChainedeComparaison');

Objective-C : [maChaine isEqualToString:@”maChainedeComparaison”];

Page 28: Apple : iOS

28

Définition d’une classe

interface (.h)

implémentation (.m)

Page 29: Apple : iOS

29

L’interface (1/2)

@interface nom : type

@end

Page 30: Apple : iOS

30

L’interface (2/2)

Page 31: Apple : iOS

31

L’implémentation

@implementation nom : type

@end

Page 32: Apple : iOS

32

Déclaration de méthodes

typeMethode : « + » pour une méthode de classe ou « - » pour une méthode d'instance;

typeRetour : type de l'objet retourné par la méthode;

nomMethode : nom de la méthode;

parametres : aux paramètres de la méthode.

typeMethode (typeRetour) nomMethode : paramètres { }

Page 33: Apple : iOS

33

Appel de méthode

[objet methode];

[objet methode:entree];

[objet methode:valeur1 param2:valeur2 param3:valeur3];

variable = [objet methode]; / variable = [objet methode:entree];[[objet1 methode1:param1] methode2:param2];

Page 34: Apple : iOS

34

Crochets ou points ?

Deux styles d'écriture peuvent être utilisés pour appeler une méthode : les crochets ou les points.

L'écriture « à point » ne fonctionne que pour les variables d'instance.

[voiture setCouleur:@"rouge"];voiture.couleur = @"rouge";

laCouleur = [voiture couleur];laCouleur = voiture.couleur;

Page 35: Apple : iOS

35

Cycle de vie des objets

Destruction

Utilisation

Création

Page 36: Apple : iOS

36

Le typage

Le typage faible :

@property (weak, nonatomic) IBOutlet UITextField *champPrenom;

Le typage fort :

@property (strong, nonatomic) IBOutlet UITextField *champPrenom;

Page 37: Apple : iOS

L'héritage

C'est un système très efficace qui permet une réutilisation du

code optimale, ainsi qu'une modularité des objets et des

classes.

37

NSObject

NSResponder

NSView

NSControl

NSButton NSTextField NSSlider

Page 38: Apple : iOS

38

Comment hériter ?

#import <Foundation/Foundation.h>

@interface Personnage : NSObject

@end

#import <Foundation/Foundation.h>#import "Personnage.h"

@interface Guerrier : Personnage

@end

Page 39: Apple : iOS

Les protocoles

Les protocoles sont (plus ou moins) une façon différente de faire hériter une classe, mais qui ne se focalise cette fois que sur les

méthodes.

39

ObjectDelegate Tableau

Page 40: Apple : iOS

40

Gérer la mémoire

La méthode alloc alloue de la mémoire pour l'objet demandé.

NSString *leGap = [[NSDateComponents alloc] init];

La méthode dealloc libère de la mémoire pour l'objet demandé.

[super dealloc];

Page 41: Apple : iOS

41

Les chaînes de caractère

Ceci est une chaîne de caractères 123 est plus petit que 456

@ç/w&!

Page 42: Apple : iOS

42

Définition

Une chaîne de caractères est une suite de zéro, un ou plusieurs caractères.

Page 43: Apple : iOS

43

NSString

NSString * maChaine; (NSString*) maChaine; NSString* maChaine;

Les chaînes de caractères sont manipulées Cocoa Touch

NSString:

Affecter une valeur à une chaîne lors de sa définition:

NSString *maChaine = @"Ceci est une chaîne de caractères";

Page 44: Apple : iOS

44

Tester l'égalité

Utilisation de l’égalité :

if (chaine1 == chaine2){}

La méthode isEqualToString de la classe NSString :

if ([chaine1 isEqualToString:chaine2]){}

Page 45: Apple : iOS

45

Longueur d'un NSString

La méthode length de la classe NSString :

NSString *a = @"ceci est une chaîne";NSLog(@"Longueur de la chaine : %i", [a length]);

Longueur de la chaîne : 19

Page 46: Apple : iOS

46

Concaténer deux NSString

Pour concaténer deux chaînes utiliserez la méthode stringWithFormat :

NSString *chaine1=@"première partie";NSString *chaine2= @" deuxième partie";NSString *chaine3;chaine3 = [NSString stringWithFormat:@"%@%@",chaine1,chaine2];NSLog(@"%@",chaine3);

première partie deuxième partie

Page 47: Apple : iOS

47

Les nombres−2048

82469541

Page 48: Apple : iOS

48

NSNumber

Pourquoi utiliser une classe dédiée à la manipulation des nombres alors que les types int, float, double, etc. sont déjà disponibles ?

Convertir des types de données;

Le type d'un objet NSNumber peut être facilement modifié en utilisant les méthodes floatValue, doubleValue, intValue, longValue, etc.

Page 49: Apple : iOS

49

Les dates et les heures

Jeudi 13 Février 201413/02/14

2014-02-13T06:00:00+01:00

Page 50: Apple : iOS

50

Définition

Plusieurs classes sont associées à la manipulation des objets date et heure dans Objective-C : NSDate, NSCalendar, NSTimeZone, NSDateComponents, NSDateFormatter.

Page 51: Apple : iOS

51

La date courante (1/3)

NSDate *date = [NSDate date];NSDateFormatter *miseEnForme = [[NSDateFormatter alloc] init];

[NSDate date] :: affecte la date courante

NSDateFormatter :: format d'affichage pour la date

Page 52: Apple : iOS

52

La date courante (2/3)

[miseEnForme setDateStyle:NSDateFormatterMediumStyle];

setDateStyle :: format d'affichage de la date

Page 53: Apple : iOS

53

La date courante (3/3)

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];[miseEnForme setLocale:usLocale];NSLog(@"Date au format %@: %@", [[miseEnForme locale] localeIdentifier], [miseEnForme stringFromDate:date]);

NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];[miseEnForme setLocale:frLocale];NSLog(@"Date au format %@: %@", [[miseEnForme locale] localeIdentifier], [miseEnForme stringFromDate:date]);

Page 54: Apple : iOS

54

Une date système

NSDate *dateCourante = [NSDate date]; NSTimeInterval secondesParJour = 24 * 60 * 60;NSDate *demain = [[NSDate alloc] initWithTimeIntervalSinceNow:secondesParJour];NSDate *hier = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondesParJour];

Page 55: Apple : iOS

55

Opérations sur les dates

NSDate *date = [NSDate date]; //Aujourd'huiNSDateComponents *leGap = [[NSDateComponents alloc] init];[leGap setYear:1];[leGap setMonth:3];[leGap setDay:10];

NSDate *nouvelleDate = [[NSCalendar currentCalendar] dateByAddingComponents:leGap toDate:date options:0];

NSLog(@"Date système : %@", date);NSLog(@"Nouvelle date : %@", nouvelleDate);

Page 56: Apple : iOS

56

Les tableaux

Page 57: Apple : iOS

57

Définition

La classe NSArray est dédiée à la manipulation de tableaux. En programmation, on parle aussi d'array.

Page 58: Apple : iOS

58

Définir et initialiser

NSArray *monTableau = [NSArray arrayWithObject :@"premier"];

NSArray *monTableau = [NSArray arrayWithObject :[NSNumber numberWithInt: 10]];

NSArray *monTableau = [NSArray arrayWithObjects :@"premier",@"deuxième",@"troisième",@"quatriè

me", nil];

NSArray *monTableau2 = [NSArray arrayWithArray :monTableau1];

Page 59: Apple : iOS

59

Accéder aux objets

containsObject renvoie la valeur true ou false si le tableau contient au moins un objet

count retourne le nombre d'objets du tableau

objectAtIndex retourne l'objet situé à l'index

lastObject retourne le dernier objet contenu dans le tableau

P0 P1 Pn

I0 I1 In

Page 60: Apple : iOS

60

Accéder aux objets

NSArray *monTableau = [NSArray arrayWithObjects :@"premier",@"deuxième",@"troisième",@"quatrième", nil];

if ([monTableau containsObject:@"premier"]) { NSLog(@"L'objet premier a été trouvé dans le tableau");} else { NSLog(@"L'objet premier n'a pas été trouvé dans le tableau");}

if ([monTableau containsObject:@"dixième"]) {NSLog(@"L'objet dixième a été trouvé dans le tableau");

} else { NSLog(@"L'objet dixième n'a pas été trouvé dans le tableau");

}NSLog(@"Dernier objet du tableau : %@", [monTableau lastObject]);

Page 61: Apple : iOS

61

QUESTIONS ?

Page 62: Apple : iOS

62

Web discographie :

http://fr.wikipedia.org/wiki/Historique_des_versions_d%27iOhttp://en.wikipedia.org/wiki/IOS_6http://en.wikipedia.org/wiki/IOS_7http://fr.wikipedia.org/wiki/GNUstephttp://fr.openclassrooms.com/informatique/cours/creez-des-applications-pour-iphone-ipad-et-ipod-touchhttp://fr.openclassrooms.com/informatique/cours/programmez-en-objective-chttp://a-renouard.developpez.com/tutoriels/ios/base-objective-c/