Apple : iOS

938 vues

Publié le

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

Publié dans : Formation
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Apple : iOS

  1. 1. APPLE : iOS By RICHARD Eddy
  2. 2. Sommaire 1. Historique iOS 2. L’environnement de développement 3. Historique du langage 4. Comment ça marche ? 5. Questions 2
  3. 3. Historique Les différentes version iOS 3
  4. 4. iPhone OS 1 Sortie : 29 juin 2007 Sortie SDK : 6 mars 2008 Premier système d’exploitation tactile, sans stylet 4
  5. 5. iPhone OS 2 Sortie & SDK: 11 juillet 2008 Apparition de l’ App Store 5
  6. 6. iPhone OS 3 Sortie & SDK : 17 juin 2009 Intégration de MMS Intégration de l’application native Dictaphone 6
  7. 7. iOS 4 Sortie & SDK : 21 Juin 2010 Multitâche Facetime pour passer des appels vidéos sur le réseau Wifi 7
  8. 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 8
  9. 9. iOS 6 Sortie SDK : 11 juin 2012 Sortie : 19 septembre 2012 Récupération de documents Paiement par mobile 9
  10. 10. iOS 7 Sortie SDK : 10 juin 2013 Sortie : 18 septembre 2013 Musique et la radio dans iTune Multitâches iOs dans la voiture AirDrop App Store Appareil photo Centre de control 10
  11. 11. L’environnement de développement Xcode (version 5.0.2) 11
  12. 12. Prérequis 12
  13. 13. Présentation : Xcode 13
  14. 14. Les perspectives de projet (1/4) Master-Detail Application OpenGL Game 14
  15. 15. Les perspectives de projet (2/4) Page-Based Application Single View Application 15
  16. 16. Les perspectives de projet (3/4) Tabbed Application Utility Application 16
  17. 17. Les perspectives de projet (4/4) Empty Application SpriteKit Game 17
  18. 18. Création de projet 18
  19. 19. Enregistrement du projet 19
  20. 20. Historique du langage L’objective-C 20
  21. 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. 21
  22. 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. 22
  23. 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. 23
  24. 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. 24
  25. 25. Comment ça marche ? La mécanique de l’Objective-C 25
  26. 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. 26
  27. 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”]; 27
  28. 28. Définition d’une classe interface (.h) implémentation (.m) 28
  29. 29. L’interface (1/2) @interface nom : type @end 29
  30. 30. L’interface (2/2) 30
  31. 31. L’implémentation @implementation nom : type @end 31
  32. 32. Déclaration de méthodes typeMethode (typeRetour) nomMethode : paramètres { }  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. 32
  33. 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]; 33
  34. 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; 34
  35. 35. Cycle de vie des objets Création Utilisation Destruction 35
  36. 36. Le typage Le typage faible : @property (weak, nonatomic) IBOutlet UITextField *champPrenom; Le typage fort : @property (strong, nonatomic) IBOutlet UITextField *champPrenom; 36
  37. 37. L'héritage NSObject NSResponder 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. NSView NSControl NSButton NSTextField NSSlider 37
  38. 38. Comment hériter ? #import <Foundation/Foundation.h> @interface Personnage : NSObject @end #import <Foundation/Foundation.h> #import "Personnage.h" @interface Guerrier : Personnage @end 38
  39. 39. 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. Object Delegate Tableau 39
  40. 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]; 40
  41. 41. Les chaînes de caractère Ceci est une chaîne de caractères 123 est plus petit que 456 @ç/w&! 41
  42. 42. Définition Une chaîne de caractères est une suite de zéro, un ou plusieurs caractères. 42
  43. 43. NSString Les chaînes de caractères sont manipulées Cocoa Touch NSString: NSString * maChaine; (NSString*) maChaine; NSString* maChaine; Affecter une valeur à une chaîne lors de sa définition: NSString *maChaine = @"Ceci est une chaîne de caractères"; 43
  44. 44. Tester l'égalité Utilisation de l’égalité : if (chaine1 == chaine2){} La méthode isEqualToString de la classe NSString : if ([chaine1 isEqualToString:chaine2]){} 44
  45. 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 45
  46. 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 46
  47. 47. Les nombres −2048 8246954 1 47
  48. 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. 48
  49. 49. Les dates et les heures Jeudi 13 Février 2014 13/02/14 2014-02-13T06:00:00+01:00 49
  50. 50. Définition Plusieurs classes sont associées à la manipulation des objets date et heure dans Objective-C : NSDate, NSCalendar, NSTimeZone, NSDateComponents , NSDateFormatter. 50
  51. 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 51
  52. 52. La date courante (2/3) [miseEnForme setDateStyle:NSDateFormatterMediumStyle];  setDateStyle :: format d'affichage de la date 52
  53. 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]); 53
  54. 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]; 54
  55. 55. Opérations sur les dates NSDate *date = [NSDate date]; //Aujourd'hui NSDateComponents *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); 55
  56. 56. Les tableaux 56
  57. 57. Définition La classe NSArray est dédiée à la manipulation de tableaux. En programmation, on parle aussi d'array. 57
  58. 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]; 58
  59. 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 59
  60. 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]); 60
  61. 61. QUESTIONS ? 61
  62. 62. Web discographie : http://fr.wikipedia.org/wiki/Historique_des_versions_d%27iO http://en.wikipedia.org/wiki/IOS_6 http://en.wikipedia.org/wiki/IOS_7 http://fr.wikipedia.org/wiki/GNUstep http://fr.openclassrooms.com/informatique/cours/creez-des-applicationspour-iphone-ipad-et-ipod-touch http://fr.openclassrooms.com/informatique/cours/programmez-enobjective-c http://a-renouard.developpez.com/tutoriels/ios/base-objective-c/ 62

×