SlideShare una empresa de Scribd logo
1 de 57
Développement Objective-c
Les bases d’objective-C
Autres comparative d’Objective2.0
Etude concepts
Les nouveautés d’Objective-C C
Conclusions et perspectives
 Application
 Introduction




                                    2
Introductio
        n
     Origine du langage
     Domaines d’application

     Environnements de
    travail




3
Introduction
Les bases d’Objective-C            Origine du langage
Autres concepts d’Objective-C      Environnements de travail
Les nouveautés d’Objective-C 2.0   Domaines d’application
Conclusions et perspectives
 4




                                                               4
Introduction
Les bases d’Objective-C                  Origine du langage
Autres concepts d’Objective-C            Environnements de travail
Les nouveautés d’Objective-C 2.0         Domaines d’application
Conclusions et perspectives
 5




      Objective-C est un langage de programmation
      orienté objet, crée par
      Brad Cox et Tom Love Customer des années 80
                              au début
                                   fails to
                                   pay
      Ce langage est inspiré du SmallTalk et du C




                                                                     5
Introduction
Les bases d’Objective-C             Origine du langage
Autres concepts d’Objective-C       Environnements de travail
Les nouveautés d’Objective-C 2.0    Domaines d’application
Conclusions et perspectives
 6



 Objective-c est un langage multi plateforme
 Il est utilisé :
              sous Mac OS d‘Apple avec la bibliothèque de
              classes Cocoa
              Linux et Windows avec la bibliothèque de classes
              libre GNUstep

 Cocoa et GNUstep sont les successeurs de l'API OpenStep,
     utilisée dans les systèmes
     d'exploitation NeXTSTEP et OPENSTEP

                                                                6
Introduction
Les bases d’Objective-C              Origine du langage
Autres concepts d’Objective-C        Environnements de travail
Les nouveautés d’Objective-C 2.0     Domaines d’application
Conclusions et perspectives
 7



  ProjectCenter : L'IDE
  GNUStep

 Il nécessite l’instalation de
     GCC et des bibliothéques
     GNUstep

 Cet IDE n est pas très
     développé

 Il est actuellement à sa version
     0.6 qui est sortie en 12
     décembre 2010
                                                                 7
Introduction
Les bases d’Objective-C            Origine du langage
Autres concepts d’Objective-C      Environnements de travail
Les nouveautés d’Objective-C 2.0   Domaines d’application
Conclusions et perspectives
 8



     Xcode: L'IDE Apple



 Un ensemble d’outils créé par
     Apple pour développement de
     des applications Mac .


 Il est actuellement à sa
     version 4.2 sortie avec MAC
     OS 10.7




                                                               8
Introduction
Les bases d’Objective-C            Origine du langage
Autres concepts d’Objective-C      Environnement de travail
Les nouveautés d’Objective-C 2.0   Domaine d’application
Conclusions et perspectives
 9




  Objective C est une solution technique proposée par Apple
   permettant de réaliser des applications vraiment bien
   adaptées pour les appareils de type mobile ou tablette.
                             Customer
  Elle est destiné uniquementfails to
                                aux appareils de la marque
                               pay
   Apple :




                                                               9
Les bases d’Objective C

         ID
         Objet

         Types de base

         Class




10
Introduction                             ID
Les bases d’Objective-C
                                         Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0         Types de base
Conclusions et perspectives              Class
 11



     Il existe deux sortes de typage:
           Le typage statique : On précise le type de
          l’objet, c’est-à-dire la classe à laquelle appartient l’objet
          au moment de la déclaration. Le compilateur s’assure
                                  Customer
          que ce type est respecté tout au long du code.
                                    fails to
                                   pay
           Le typage dynamique: On déclare l’objet sans type
          grâce au pointeur id. Le compilateur ne possède alors
          aucune connaissance sur le type de la référence qui
          peut représenter une instance de n’importe quelle
          classe
         L’Objective C se caractérise par le typage dynamique
                                                                          11
Introduction                          ID
Les bases d’Objective-C
                                      Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0      Types de base
Conclusions et perspectives           Class
 12


  ID:
      En Objective-C, les objets sont identifiés par un type de
      données distinctes: id .
                              Customer
                                fails to
   Ce type est défini comme un pointeur vers un pointeur vers
                                pay
    les données de l'objet (ses variables d'instance).
        id anObject;

   Tous les objets, indépendamment de leurs variables
      d'instance ou des méthodes, sont de type ID .

   id est le type par défaut de la valeur retournée par n’importe
      quelle méthode Objective-C.                                    12
Introduction                                   ID
Les bases d’Objective-C                        Objet
Autres concepts d’Objective-C                  Types de base
Les nouveautés d’Objective-C 2.0               Class
Conclusions et perspectives
 13




                                   Racine de l’arbre
                                   des classes

                   • Object                            • NSObject
                                                           Objective
                       Java                                   C


        Le préfixe NS vient de NextStep


                                                                       13
Introduction                                  ID
Les bases d’Objective-C
                                              Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              Types de base
Conclusions et perspectives                   Class
 14

                                   NSObject




                                    NSArray                   NSString




                                   NSMutable



                                                                         14
Introduction                               ID
Les bases d’Objective-C
                                           Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0           Types de base
Conclusions et perspectives                Class
 15




  Objective-C est un sur-ensemble du langage C.
  Il n’a fait que rajouter des concepts et les mots-clefs les
  accompagnant, notons également :
                              Customer
             la présence des valeurs nil et Nil:
                                fails to
                                       pay
                         nil est l’équivalent de NULL pour un pointeur
                          d’objet.
                            nil et NULL ne sont pas interchangeables
                         Nil est l’équivalent de nil pour un pointeur de
                          classe, car en Objective-C, les classes sont aussi
                          des objets (instances de méta-classes)
                la présence du type id, du type SEL et du type
                  BOOL avec ses valeurs YES et NO                          15
Introduction                               ID
Les bases d’Objective-C
                                           Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0           Types de base
Conclusions et perspectives                Class
 16



                   la présence de deux mots-clés self et super dont
                    le fonctionnement est semblable aux this et
                    super respectivement de C# et Java:
                            Le mot-clé self désigne l’objet courant dans la
                             définition d’une méthode
                            Le mot-clé super désigne la classe parente


        Les mots-clés self et super sont très utilisés en Objective-
      C, notamment pour l’allocation et l’initialisation des instances.



                                                                               16
Introduction                              ID
Les bases d’Objective-C
                                          Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0          Types de base
Conclusions et perspectives               Class
 17




                                   Customer
                                     fails to
                                     pay




                                                          17
Introduction                                    ID
Les bases d’Objective-C
                                                Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0                Types de base
Conclusions et perspectives                     Class
 18


                    Fichier herder .h
      @interface MaClasse : NSObject {
      // vous placez ici toutes vos propriétés
      }
      // et vos méthodes en dehors des
      accolades
                                       Customer
      end                                 fails to
                                         pay

            Fichier d’implémantation main.m

      // Vous devez absolument importer votre
      fichier .h
      #import «MaClasse.h »;
      @implentation MaClasse
      // vous placez ici votre code
      end
                                                                18
Introduction                           ID
Les bases d’Objective-C
                                       Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0       Types de base
Conclusions et perspectives            Class
 19


      Message:


       Les objets Objective-C communiquent entre eux grâce à
          des envois de messages qui sont gérés par le runtime
                              Customer
                                fails to
       Les envois de message sepay en utilisant la syntaxe
                                 font
          suivante :
               [ recepteur message];

          L’envoi de message correspond à un appel de fonctions.


                                                                    19
Introduction                               ID
Les bases d’Objective-C
                                           Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0           Types de base
Conclusions et perspectives                Class
 20


      Méthode:


       Dans une classe , on peux définir des méthodes

               de classe : préfixée par + ( correspondent aux
                                 Customer
                                   fails to
              méthodes statiques de java)
                                     pay
                  d’instance: préfixée par -

          Les symboles + et – n’ont rien à voir avec la signification
          public et pravite de UML.

          En Objective-C , les méthodes sont toujours publiques
                                                                         20
Introduction                                  ID
Les bases d’Objective-C
                                              Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              Types de base
Conclusions et perspectives                   Class
 21


                   Syntaxe:

                         - ( void) myMethod : (int) : arg

                         Type de     Customer
                          retour       fails to
                                       pay
                   Peut prendre n’importe type de données valide:
                       void : pas de retour
                       id : pointeur vers un objet de n’importe classe
                        NSString* : pointeur vers une chaine de caractére (
                   NSString).




                                                                              21
Introduction                                  ID
Les bases d’Objective-C
                                              Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              Types de base
Conclusions et perspectives                   Class
 22


                         Syntaxe:

                            - ( void) myMethod (int) : arg

                           Type de Customer
                           méthode   fails to
                                        pay
                         Peut prendre:
                           +: pour les méthodes de classe
                           - : pour les méthodes d’instance




                                                              22
Introduction                                  ID
Les bases d’Objective-C
                                              Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              Types de base
Conclusions et perspectives                   Class
 23


                       Syntaxe:

                             - ( void) myMethod : (int) : arg

                                    Nom de la
                                     Customer
                                    méthode to
                                       fails
                                        pay




                                                                23
Introduction                                  ID
Les bases d’Objective-C
                                              Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              Types de base
Conclusions et perspectives                   Class
 24


                      Syntaxe:

                            - ( void) mymethod : (int) : arg

                                        Type             Nom de
                                     d’argument        l’argument


                       Déclaration de multiple argument :
                         - (void) mymethodAndAlso : (int) arg1 : (int)
                      arg2
                               ou aussi
                         - (void) mymethod: (int) arg1 andAlso: (int) arg2
                                Méthode prend 2 argument et
                                elle est appelée
                                « mymethod:andAlso: »

                                                                             24
Introduction                                   ID
Les bases d’Objective-C
                                               Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0               Types de base
Conclusions et perspectives                    Class
 25


      Appel à la méthode:

         - ( void) myMethod : (int) : arg

                               [myobject myMethod: 5];

         - (void) myMethodAndAlso : (int) arg1 : (int) arg2

                               [myobject myMethodAndAlso :5:6];


         - (void) myMethod: (int) arg1 andAlso: (int) arg2

                               [myObject myMethod:5 andAlso:6];



                                                                  25
Introduction                                     ID
Les bases d’Objective-C
                                                 Objet
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0                 Types de base
Conclusions et perspectives                      Class
 26


      visibilité pour les variables d'instance



           @ Private: la variable d'instance n'est accessible que
                                 Customer
        dans la classe qui la déclare.
                                           fails to
                                           pay
             @ protected: la variable d'instance est accessible au
        sein de la classe qui le déclare et avec la classe qui en
        hérite.


               @ Public: la variable d'instance est accessible partout.
                                                                          26
Cycle de vie d’un objet

           Création d’objet
           Gestion de mémoire
           Destruction d’objet




27
Introduction
Les bases d’Objective-C                          Création d’objet
Autres concepts d’Objective-C                    Gestion de mémoire
Les nouveautés d’Objective-C 2.0                 Destruction d’objet
Conclusions et perspectives
 28


      Création d’objet:

      •   2 étapes:
             allocation de mémoire pour stocker l’objet
                                 Customer
                 + alloc Méthode de classe qui alloue l’espace
                                   fails to
            mémoire nécessaire     pay


            initialisation d’objet
                 - init Méthode d’instance pour initialiser l’objet
                 Création= allocation+ initialisation

             Person *person = nil;
             person = [[Person alloc] init];                           28
Introduction
Les bases d’Objective-C                        Création d’objet
Autres concepts d’Objective-C                  Gestion de mémoire
Les nouveautés d’Objective-C 2.0               Destruction d’objet
Conclusions et perspectives
 29



      Gestion de mémoire:
         //Pdf 406;;;PAG28 30
         Mode managed(géré) via le mécanisme de comptage de référence(
         reference counting) :
                                      Customer
            • l’environnement d’exécution associe à chaque objet un compteur.
                                          fails to
            • Ce compteur représente le nombre de références pointant vers cet
            objet.                        pay
            • Si le compteur est> 0, l'objet est vivant et valide.
                  + alloc et –copy créent l’objet avec un compteur initialisé en 1
                  - retain incrémente le compteur
                  - release décrémente le compteur

            • Lorsque le compteur atteint 0 ,l’objet est détruit
                   - dealloc est appelée automatiquement
             • -(NSUInteger)retainCount Renvoi la valeur du compteur de référence
             sous forme d’entier.
                                                                                      29
Introduction
Les bases d’Objective-C                         Création d’objet
Autres concepts d’Objective-C                   Gestion de mémoire
Les nouveautés d’Objective-C 2.0                Destruction d’objet
Conclusions et perspectives
 30

                 Le compteur de référence en action

      Person *person = [[Person alloc] init];


                                      Customer
      [person retain];                  fails to
                                        pay

      [person release];



      [person release];



                                                                      30
Introduction
Les bases d’Objective-C                            Création d’objet
Autres concepts d’Objective-C                      Gestion de mémoire
Les nouveautés d’Objective-C 2.0                   Destruction d’objet
Conclusions et perspectives
 31



      Les autorelease pools
      • les autorelease pools entrent en jeu dans la gestion de mémoire des objet dont
      on dispose pas directement de leur création via les méthodes alloc , init et copy

      • Un pool est une zone mémoire dans laquelle des objets sont alloués
                                         Customer
                                           fails to
      • Un autorelease pool est une instance de NSAutoreleasePool qui définit un
      champ d'objets temporaires           pay
      • Ces objet sont ajoutés au autorelease pool actuel suite à un message -
      autoreleased .

      • Lorsque la autorelease pool est libérée tous les objets qui y ont été ajoutés sont
      automatiquement libérés.

          C'est un moyen simple de gérer la libération automatique des objets qui sont
      nécessaires temporairement.

                                                                                             31
Introduction
Les bases d’Objective-C                   Création d’objet
Autres concepts d’Objective-C             Gestion de mémoire
Les nouveautés d’Objective-C 2.0          Destruction d’objet
Conclusions et perspectives
 32




                                   Customer
                                     fails to
                                     pay




                                                                32
Introduction
Les bases d’Objective-C                   Création d’objet
Autres concepts d’Objective-C             Gestion de mémoire
Les nouveautés d’Objective-C 2.0          Destruction d’objet
Conclusions et perspectives
 33


      L’objet est créé




                                   Customer
                                     fails to
                                     pay




                                                                33
Introduction
Les bases d’Objective-C                       Création d’objet
Autres concepts d’Objective-C                 Gestion de mémoire
Les nouveautés d’Objective-C 2.0              Destruction d’objet
Conclusions et perspectives
 34


      L’objet est ajouté à la pool suite à -autorealease




                                      Customer
                                        fails to
                                        pay




                                                                    34
Introduction
Les bases d’Objective-C                      Création d’objet
Autres concepts d’Objective-C                Gestion de mémoire
Les nouveautés d’Objective-C 2.0             Destruction d’objet
Conclusions et perspectives
 35


      Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses
      objets



                                     Customer
                                       fails to
                                       pay




                                                                                 35
Introduction
Les bases d’Objective-C                      Création d’objet
Autres concepts d’Objective-C                Gestion de mémoire
Les nouveautés d’Objective-C 2.0             Destruction d’objet
Conclusions et perspectives
 36


      Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses
      objets



                                     Customer
                                       fails to
                                       pay




                                                                                 36
Introduction
Les bases d’Objective-C                      Création d’objet
Autres concepts d’Objective-C                Gestion de mémoire
Les nouveautés d’Objective-C 2.0             Destruction d’objet
Conclusions et perspectives
 37


      Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses
      objets



                                     Customer
                                       fails to
                                       pay




                                                                                 37
Introduction
Les bases d’Objective-C                      Création d’objet
Autres concepts d’Objective-C                Gestion de mémoire
Les nouveautés d’Objective-C 2.0             Destruction d’objet
Conclusions et perspectives
 38



      Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses
      objets


                                     Customer
                                       fails to
                                       pay




                                                                                 38
Autres concepts d’Objective
                 C
         L’héritage
         Le polymorphisme et La

        surcharge
         Protocole

         Catégories

         Run-time


39
Introduction                                 Héritage
Les bases d’Objective-C                      Polymorphisme et surcharge
Autres concepts d’Objective-C                Protocole
Les nouveautés d’Objective-C 2.0             Catégories
Conclusions et perspectives                  Run-Time
 40


      Héritage:

   La réutilisation du code d'une classe mère dans une
    classe fille.
                          Customer
   Comme Java, Objective C est un langage orienté objet à
                            fails to
    héritage simple.              Héritage
                                       pay
                             @interface NomClassFille:
                             NomClassMere
                                  déclaration des méthodes
                             @end



   Objective-C n’implémente pas l’héritage multiple, et le
       compense par d’autres concepts: les protocoles et les
       catégories .                                                       40
Introduction                          Héritage
Les bases d’Objective-C               Polymorphisme et surcharge
Autres concepts d’Objective-C         Protocole
Les nouveautés d’Objective-C 2.0      Catégories
Conclusions et perspectives           Run-Time
 41


      Polymorphism
      e:
       Le polymorphisme est un concept extrêmement puissant en
        POO, il permet de manipuler des objets sans en connaître le
        type tout en se basant sur la relation d’héritage.
       Un objet a comme type non seulement sa classe mais aussi
        n’importe quelle classe dérivée.
       L’Objective C supporte le polymorphisme simple qui est
        présenté par l’intermédiaire des protocoles .
  Surcharge:

       Contrairement à C + +, Java et C #, l’Objective C ne
        supporte pas la surcharge des méthodes et des
                                                                   41
        opérateurs.
Introduction                                   Héritage
Les bases d’Objective-C                        Polymorphisme et surcharge
Autres concepts d’Objective-C                  Protocole
Les nouveautés d’Objective-C 2.0               Catégories
Conclusions et perspectives                    Run-Time
 42


  Protocole :
   Un protocole est un ensemble de méthodes définies pour
    être implémentées par des classes adhérentes.
   Le protocole ne fournit donc pas d’implémentation, mais
                               Customer
    juste la définition des méthodes.
                                 fails to
                                      pay
       Cette notion est reconnue en langage java par interface (
  ne faut donc pas confondre avec la notion d'interface
  de objective C).

      les protocoles Declaration de protocole un fichier d’en-tête ( .h)
                     sont déclarés dans
                @protocole Nom-protocole
                    déclaration des méthodes
                @end                                                        42
Introduction                               Héritage
Les bases d’Objective-C                    Polymorphisme et surcharge
Autres concepts d’Objective-C              Protocole
Les nouveautés d’Objective-C 2.0           Catégories
Conclusions et perspectives                Run-Time
 43




   Une classe peut implémenter un nombre quelconque de
      protocoles
                   implémentation de protocole par une classe
            @interface NomClass :Nom_super_Class
            <proto1,proto2….>
            //implémentation
            @end


   Son implémentation doit alors contenir une définition pour
      toutes les méthodes de tous les protocoles de la liste



                                                                        43
Introduction                               Héritage
Les bases d’Objective-C                    Polymorphisme et surcharge
Autres concepts d’Objective-C              Protocole
Les nouveautés d’Objective-C 2.0           Catégories
Conclusions et perspectives                Run-Time
 44


  Les catégories :
    Les catégories permettent d’étendre les fonctionnalités d’une
  classe sans avoir besoin de définir une sous-classe en ajouter
  des méthodes à la classe existante.
                               Customer
     La déclaration et l’implémentation d’une catégorie sont
                                 fails to
  similaires à celles d’une classe
                                 pay Catégorie

                         #import « NomClassACatégoriser.h »
                         @interface NomClassACatégoriser (NomCatégorie)
                            // declaration des attributs et des méthodes
                         @end

                         @implementation NomClassACatégoriser
                         (NomCatégorie)
                            // declaration des variables
                           // implémentation des méthodes                  44
Introduction                          Héritage
Les bases d’Objective-C               Polymorphisme et surcharge
Autres concepts d’Objective-C         Protocole
Les nouveautés d’Objective-C 2.0      Catégories
Conclusions et perspectives           Run-Time
 45


      Run-Time:

       Le système d'exécution en Objective C est un élément
        essentiel de la langue.
                                 Customer
       Le run-time fournit le comportement de la liaison
                                    fails to
        dynamique, ainsi que quelques autres fonctionnalités
                                    pay
        très puissantes, comme le chargement dynamique de
        classes dans un programme en cours, prévoyant la
        persistance des objets, et de soutenir certaines des
        caractéristiques de l'héritage multiple.
       Les capacités et la mise en œuvre de la composante
        temps d'exécution de l'Objective C a tendance à varier
        entre les compilateurs plus d'autres caractéristiques du
        langage.                                                   45
Les nouveautés d’Objective-C
     2.0
            Garbage Collector
            @Properties,@

           synthesize
            @optional,@required

            Dot Syntax




46
Introduction                               Garbage Collector
Les bases d’Objective-C
                                           @Properties,@ synthesize
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0           @optional,@required
Conclusions et perspectives                Dot Syntax
 47




 2007 :   Sortie de Mac OS X v10.5 Leopard                           Mise à
  jours des standards de l’objective-C
                                   Customer
                                     fails to
 Nouveautés:                        pay

       Outils de gestion de mémoire dynamique regroupés dans
        un système nommé garbage collector.
       Ajout de mots clés :@proprty,@ synthesize
       Modifications de syntaxe ( Dot Syntax)


                                                                               47
Introduction                                  Garbage Collector
Les bases d’Objective-C
                                              @Properties,@ synthesize
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0              @optional,@required
Conclusions et perspectives                   Dot Syntax
 48

Garbage Collector:
 Comme dans le monde java et .Net,La fonction principale d’un
  ramasse-miettes est de trouver les objets qui ne sont plus utilisés afin
  de libérer la mémoire qu’ils occupent.
 L’activation du ramasse-miettes se fait au moment de la compilation,
                                 Customer
  et c’est donc une option à passer au to
                                   fails compilateur
                                        pay
 Il existe trois modes différents pour la gestion automatique de la
  mémoire :
          Unsupported (non compatible ): Le code n’est pas écrit pour la gestion
         automatique de mémoire et est donc incompatible avec le garbage Collector
          Required (nécessaire ): Le garbage collector est requis car le code ne
         gère pas la mémoire (retain/release).
          Supported (compatible): Cela signifie que le code peut s’exécuter en
         mode ramasse-miettes, mais également en mode géré

                                                                                     48
Introduction                             Garbage Collector
Les bases d’Objective-C                  @Properties,@ synthesize
Autres concepts d’Objective-C            @optional,@required
Les nouveautés d’Objective-C 2.0         Dot Syntax
Conclusions et perspectives
 49



@Properties,@ synthesize


     La synthèse automatique des accesseurs et modificateurs se
    fera avec :              Customer
                                   fails to
                                   pay
       @ Properties : génèration des déclarations de setter et
         des getter dans l’interface (.h)


       @synthesize : génèration des implémentations de setter
         et des getter dans dans le fichier d’implémentation (.m)

                                                                    49
Introduction                                  Garbage Collector
Les bases d’Objective-C                       @Properties,@ synthesize
Autres concepts d’Objective-C                 @optional,@required
Les nouveautés d’Objective-C 2.0              Dot Syntax
Conclusions et perspectives
 50



@Properties:


      Par défaut, les propriétés crées:
         porteront respectivement le nom de nom/setNom pour le
                                 Customer
         getter et le setter       fails to
                                        pay
      - (void) setMaChaine: (NSString                @property NSString *
      *)chaine;                                      maChaine;
      - (NSString *) maChaine;


         sont en lecture et écriture (readwrite)
 On peut modifier ces valeurs par défauts en ajoutant des
    attributs aux propriétés
                                                                            50
Introduction                             Garbage Collector
Les bases d’Objective-C
                                         @Properties,@ synthesize
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0         @optional,@required
Conclusions et perspectives              Dot Syntax
 51
@Properties:
  Declaration: @propery (writability, setter, atomicity) type name;
     Writability :readonly, readwrite
     Setter semantic :assign, copy, retain
                              Customer
     Atomicity :atomic, nonatomic
                                fails to
                                   pay
  On peut modifier ces valeurs par défauts en ajoutant des
  attributs aux propriétes :
   @property (getter=maChaine) NSString * maChaine;
   @property (setter=setMaChaine) NSString * maChaine;
   @property (getter=maChaine, setter=setMaChaine) NSString *
   maChaine;
 @property NSString * maChaine;      @property (readwrite) NSString *
 maChaine;                                                              51
Introduction                                Garbage Collector
Les bases d’Objective-C
                                            @Properties,@ synthesize
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0            @optional,@required
Conclusions et perspectives                 Dot Syntax
 52



   Lorsqu’une classe implémente un protocole, elle doit
      implémenter toutes ses méthodes .

   Avec Objective-C 2.0, les nouveaux mots-clefs @optional
                            Customer
    et @required permettent de distinguer des méthodes
                              fails to
    optionnelles des méthodespay
                               obligatoires.
                                   Declaration de protocole
                          @protocole Nom-protocole
                              @optional
                                - (void) methodeoptionnelle ;
                              @required
                                - (void) methodheObligatoire ;
                          @end

                                                                       52
Introduction                                Garbage Collector
Les bases d’Objective-C
                                            @Properties,@ synthesize
Autres concepts d’Objective-C
Les nouveautés d’Objective-C 2.0            @optional,@required
Conclusions et perspectives                 Dot Syntax
 53



Dot Syntax :
 C’est une nouvelle syntaxe introduite avec Objective C 2.0
    utilisant un point (.) au lieu des crochets habituels ([ ])
              int age= [person age] Customer
                                    ;         int
              age=peron.age ;         fails to
             [person setAge:newAge] ; pay        peron.age =
             newAge;

    Une meilleur lisibilité du code lorsque plusieurs messages
    doivent être imbriqués
         [[person child] setAge:newAge] ;          peron.child.age =
         newAge;


                                                                       53
Etude comparative
       d’Objective C

      Objective C VS Java
      Autres Comparaisons




54
Introduction
Les bases d’Objective-C
                                                 Objective C VS Java
Les concepts d’orienté objet dans Objective-C
Les nouveautés d’Objective-C 2.0                 Autres Comparaisons
Conclusions et perspectives
 55



  Java                                      Objective C

  les API sont définies et mises en         les API cohérentes sont définies par la
  Langage Orienté Objet à la fois           Langage Orienté Objet compilé
  œuvre par les distributions Sun Java      spécification OpenStep.
  compilé et interprété (en langage         directement en langage machine
  Development Kit                           Ceci est mis en œuvre par GNUstep
  intermédiaire)
                                            et Mac OS X Cocoa.
  La syntaxe de Java est basé sur le        est basé sur C, et les extensions OO
   utilise garbage collection pour la        utilise la gestion de la mémoire
  langage C + +                             sont comparables à ceux de Smalltalk
  gestion de la mémoire                     manuelle, le comptage de référence,
  est typé statiquement, mais fournit les   et garbage collection comme des
                                            est typé dynamiquement, mais fournit
  mécanismes de type-casting pour           options
                                            également le typage statique
  contourner interfaces limitations du
  fournit des certaines                     fournit des protocoles
  typage statique
  Tas fixes                                 Tas sont géré par l'OS et le système
                                            d'exécution



                                                                                      55
Introduction
Les bases d’Objective-C                         Objective C VS Java
Les concepts d’orienté objet dans Objective-C   Autres Comparaisons
Les nouveautés d’Objective-C 2.0
Conclusions et perspectives
 56




                                                                      56
57




     Merci pour votre Attention

Más contenido relacionado

La actualidad más candente

Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancéeMahfoud EL HOUDAIGUI
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharpSDFG5
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliALTER WAY
 
Modélisation par Objets - Introduction - De Merise à UML
Modélisation par Objets - Introduction - De Merise à UMLModélisation par Objets - Introduction - De Merise à UML
Modélisation par Objets - Introduction - De Merise à UMLMireille Blay-Fornarino
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Projet COM02.ppt
Projet COM02.pptProjet COM02.ppt
Projet COM02.pptPtidej Team
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp FrGregory Renard
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
 
20100629 dsl-poitou-charentes-jug
20100629 dsl-poitou-charentes-jug20100629 dsl-poitou-charentes-jug
20100629 dsl-poitou-charentes-jugBENOIS Jérôme
 

La actualidad más candente (20)

Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancée
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
LMO02.ppt
LMO02.pptLMO02.ppt
LMO02.ppt
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien Pauli
 
C#
C#C#
C#
 
Modélisation par Objets - Introduction - De Merise à UML
Modélisation par Objets - Introduction - De Merise à UMLModélisation par Objets - Introduction - De Merise à UML
Modélisation par Objets - Introduction - De Merise à UML
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Projet COM02.ppt
Projet COM02.pptProjet COM02.ppt
Projet COM02.ppt
 
Cours de c
Cours de cCours de c
Cours de c
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
POO en C++: Les fonctions
POO en C++: Les fonctionsPOO en C++: Les fonctions
POO en C++: Les fonctions
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er année
 
20100629 dsl-poitou-charentes-jug
20100629 dsl-poitou-charentes-jug20100629 dsl-poitou-charentes-jug
20100629 dsl-poitou-charentes-jug
 

Destacado

Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsCloudNetCare
 
FPGA Camp - Aldec Presentation
FPGA Camp - Aldec PresentationFPGA Camp - Aldec Presentation
FPGA Camp - Aldec PresentationFPGA Central
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIslemoslideshare
 
Presentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskPresentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskRaef Ghribi
 
ROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEHoussem Eddine LASSOUED
 
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustré
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustréPrésentation du portail captif Alcasar PPT avec tutoriel pratique illustré
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustréyassine87
 
Jalma observatoire du financement de la santé en France 2014
Jalma observatoire du financement de la santé en France 2014Jalma observatoire du financement de la santé en France 2014
Jalma observatoire du financement de la santé en France 2014JALMAOfficiel
 
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALE
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALEREUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALE
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALElaurentlamothe
 
Savoir et connaire auxiliaires mode
Savoir et connaire auxiliaires modeSavoir et connaire auxiliaires mode
Savoir et connaire auxiliaires modeAlain Lescart
 
La régulation du cycle cellulaire
La régulation du cycle cellulaireLa régulation du cycle cellulaire
La régulation du cycle cellulaireAsmae LGUENSAT
 
Birds high fashion show
Birds high fashion show   Birds high fashion show
Birds high fashion show Amebas
 
POA Stiforp - MyOpportunity
POA Stiforp - MyOpportunityPOA Stiforp - MyOpportunity
POA Stiforp - MyOpportunityMyOpportunity
 
Combinación de teclas para windows madena
Combinación de teclas para windows madena Combinación de teclas para windows madena
Combinación de teclas para windows madena ASDASDSADSA
 
C'est dit, c'est écrit ! Case Study Fitness
C'est dit, c'est écrit ! Case Study FitnessC'est dit, c'est écrit ! Case Study Fitness
C'est dit, c'est écrit ! Case Study FitnessCditCecrit
 

Destacado (20)

Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
FPGA Camp - Aldec Presentation
FPGA Camp - Aldec PresentationFPGA Camp - Aldec Presentation
FPGA Camp - Aldec Presentation
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NI
 
LabView Workshop
LabView WorkshopLabView Workshop
LabView Workshop
 
Presentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskPresentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help desk
 
ROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFEROBOT à base d'Android - Présentation PFE
ROBOT à base d'Android - Présentation PFE
 
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustré
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustréPrésentation du portail captif Alcasar PPT avec tutoriel pratique illustré
Présentation du portail captif Alcasar PPT avec tutoriel pratique illustré
 
Jalma observatoire du financement de la santé en France 2014
Jalma observatoire du financement de la santé en France 2014Jalma observatoire du financement de la santé en France 2014
Jalma observatoire du financement de la santé en France 2014
 
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALE
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALEREUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALE
REUNION DU GROUPE D'APPUI DE LA COMMUNAUTE INTERNATIONALE
 
La « classe » en pédagogie des Mathématiques - Caleb Gattegno
La « classe » en pédagogie des Mathématiques - Caleb GattegnoLa « classe » en pédagogie des Mathématiques - Caleb Gattegno
La « classe » en pédagogie des Mathématiques - Caleb Gattegno
 
Savoir et connaire auxiliaires mode
Savoir et connaire auxiliaires modeSavoir et connaire auxiliaires mode
Savoir et connaire auxiliaires mode
 
La régulation du cycle cellulaire
La régulation du cycle cellulaireLa régulation du cycle cellulaire
La régulation du cycle cellulaire
 
Birds high fashion show
Birds high fashion show   Birds high fashion show
Birds high fashion show
 
POA Stiforp - MyOpportunity
POA Stiforp - MyOpportunityPOA Stiforp - MyOpportunity
POA Stiforp - MyOpportunity
 
Articles fr le silent way_2
Articles fr le silent way_2Articles fr le silent way_2
Articles fr le silent way_2
 
Combinación de teclas para windows madena
Combinación de teclas para windows madena Combinación de teclas para windows madena
Combinación de teclas para windows madena
 
C'est dit, c'est écrit ! Case Study Fitness
C'est dit, c'est écrit ! Case Study FitnessC'est dit, c'est écrit ! Case Study Fitness
C'est dit, c'est écrit ! Case Study Fitness
 
Perlaojeda
PerlaojedaPerlaojeda
Perlaojeda
 
1
11
1
 
La communication en bibliothèque uiversitaire
La communication en bibliothèque uiversitaireLa communication en bibliothèque uiversitaire
La communication en bibliothèque uiversitaire
 

Similar a objective C (12)

Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
 
Jpa(1)
Jpa(1)Jpa(1)
Jpa(1)
 
Interface Definition Language
Interface Definition Language Interface Definition Language
Interface Definition Language
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads paris
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Exemple code oop_labview
Exemple code oop_labviewExemple code oop_labview
Exemple code oop_labview
 
Projet+com02.ppt
Projet+com02.pptProjet+com02.ppt
Projet+com02.ppt
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
C Plus Plus demo
C Plus Plus demoC Plus Plus demo
C Plus Plus demo
 

Más de Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

objective C

  • 2. Les bases d’objective-C Autres comparative d’Objective2.0 Etude concepts Les nouveautés d’Objective-C C Conclusions et perspectives Application Introduction 2
  • 3. Introductio n  Origine du langage  Domaines d’application  Environnements de travail 3
  • 4. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnements de travail Les nouveautés d’Objective-C 2.0 Domaines d’application Conclusions et perspectives 4 4
  • 5. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnements de travail Les nouveautés d’Objective-C 2.0 Domaines d’application Conclusions et perspectives 5  Objective-C est un langage de programmation orienté objet, crée par Brad Cox et Tom Love Customer des années 80 au début fails to pay  Ce langage est inspiré du SmallTalk et du C 5
  • 6. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnements de travail Les nouveautés d’Objective-C 2.0 Domaines d’application Conclusions et perspectives 6  Objective-c est un langage multi plateforme  Il est utilisé :  sous Mac OS d‘Apple avec la bibliothèque de classes Cocoa  Linux et Windows avec la bibliothèque de classes libre GNUstep  Cocoa et GNUstep sont les successeurs de l'API OpenStep, utilisée dans les systèmes d'exploitation NeXTSTEP et OPENSTEP 6
  • 7. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnements de travail Les nouveautés d’Objective-C 2.0 Domaines d’application Conclusions et perspectives 7 ProjectCenter : L'IDE GNUStep  Il nécessite l’instalation de GCC et des bibliothéques GNUstep  Cet IDE n est pas très développé  Il est actuellement à sa version 0.6 qui est sortie en 12 décembre 2010 7
  • 8. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnements de travail Les nouveautés d’Objective-C 2.0 Domaines d’application Conclusions et perspectives 8 Xcode: L'IDE Apple  Un ensemble d’outils créé par Apple pour développement de des applications Mac .  Il est actuellement à sa version 4.2 sortie avec MAC OS 10.7 8
  • 9. Introduction Les bases d’Objective-C Origine du langage Autres concepts d’Objective-C Environnement de travail Les nouveautés d’Objective-C 2.0 Domaine d’application Conclusions et perspectives 9  Objective C est une solution technique proposée par Apple permettant de réaliser des applications vraiment bien adaptées pour les appareils de type mobile ou tablette. Customer  Elle est destiné uniquementfails to aux appareils de la marque pay Apple : 9
  • 10. Les bases d’Objective C  ID  Objet  Types de base  Class 10
  • 11. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 11  Il existe deux sortes de typage:  Le typage statique : On précise le type de l’objet, c’est-à-dire la classe à laquelle appartient l’objet au moment de la déclaration. Le compilateur s’assure Customer que ce type est respecté tout au long du code. fails to pay  Le typage dynamique: On déclare l’objet sans type grâce au pointeur id. Le compilateur ne possède alors aucune connaissance sur le type de la référence qui peut représenter une instance de n’importe quelle classe L’Objective C se caractérise par le typage dynamique 11
  • 12. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 12 ID:  En Objective-C, les objets sont identifiés par un type de données distinctes: id . Customer fails to  Ce type est défini comme un pointeur vers un pointeur vers pay les données de l'objet (ses variables d'instance). id anObject;  Tous les objets, indépendamment de leurs variables d'instance ou des méthodes, sont de type ID .  id est le type par défaut de la valeur retournée par n’importe quelle méthode Objective-C. 12
  • 13. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Types de base Les nouveautés d’Objective-C 2.0 Class Conclusions et perspectives 13 Racine de l’arbre des classes • Object • NSObject Objective Java C Le préfixe NS vient de NextStep 13
  • 14. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 14 NSObject NSArray NSString NSMutable 14
  • 15. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 15  Objective-C est un sur-ensemble du langage C.  Il n’a fait que rajouter des concepts et les mots-clefs les accompagnant, notons également : Customer  la présence des valeurs nil et Nil: fails to pay  nil est l’équivalent de NULL pour un pointeur d’objet. nil et NULL ne sont pas interchangeables  Nil est l’équivalent de nil pour un pointeur de classe, car en Objective-C, les classes sont aussi des objets (instances de méta-classes)  la présence du type id, du type SEL et du type BOOL avec ses valeurs YES et NO 15
  • 16. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 16  la présence de deux mots-clés self et super dont le fonctionnement est semblable aux this et super respectivement de C# et Java:  Le mot-clé self désigne l’objet courant dans la définition d’une méthode  Le mot-clé super désigne la classe parente Les mots-clés self et super sont très utilisés en Objective- C, notamment pour l’allocation et l’initialisation des instances. 16
  • 17. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 17 Customer fails to pay 17
  • 18. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 18 Fichier herder .h @interface MaClasse : NSObject { // vous placez ici toutes vos propriétés } // et vos méthodes en dehors des accolades Customer end fails to pay Fichier d’implémantation main.m // Vous devez absolument importer votre fichier .h #import «MaClasse.h »; @implentation MaClasse // vous placez ici votre code end 18
  • 19. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 19 Message:  Les objets Objective-C communiquent entre eux grâce à des envois de messages qui sont gérés par le runtime Customer fails to  Les envois de message sepay en utilisant la syntaxe font suivante : [ recepteur message];  L’envoi de message correspond à un appel de fonctions. 19
  • 20. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 20 Méthode:  Dans une classe , on peux définir des méthodes  de classe : préfixée par + ( correspondent aux Customer fails to méthodes statiques de java) pay  d’instance: préfixée par -  Les symboles + et – n’ont rien à voir avec la signification public et pravite de UML.  En Objective-C , les méthodes sont toujours publiques 20
  • 21. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 21 Syntaxe: - ( void) myMethod : (int) : arg Type de Customer retour fails to pay Peut prendre n’importe type de données valide: void : pas de retour id : pointeur vers un objet de n’importe classe NSString* : pointeur vers une chaine de caractére ( NSString). 21
  • 22. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 22 Syntaxe: - ( void) myMethod (int) : arg Type de Customer méthode fails to pay Peut prendre: +: pour les méthodes de classe - : pour les méthodes d’instance 22
  • 23. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 23 Syntaxe: - ( void) myMethod : (int) : arg Nom de la Customer méthode to fails pay 23
  • 24. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 24 Syntaxe: - ( void) mymethod : (int) : arg Type Nom de d’argument l’argument Déclaration de multiple argument : - (void) mymethodAndAlso : (int) arg1 : (int) arg2 ou aussi - (void) mymethod: (int) arg1 andAlso: (int) arg2 Méthode prend 2 argument et elle est appelée « mymethod:andAlso: » 24
  • 25. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 25 Appel à la méthode: - ( void) myMethod : (int) : arg [myobject myMethod: 5]; - (void) myMethodAndAlso : (int) arg1 : (int) arg2 [myobject myMethodAndAlso :5:6]; - (void) myMethod: (int) arg1 andAlso: (int) arg2 [myObject myMethod:5 andAlso:6]; 25
  • 26. Introduction ID Les bases d’Objective-C Objet Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 Types de base Conclusions et perspectives Class 26 visibilité pour les variables d'instance @ Private: la variable d'instance n'est accessible que Customer dans la classe qui la déclare. fails to pay @ protected: la variable d'instance est accessible au sein de la classe qui le déclare et avec la classe qui en hérite. @ Public: la variable d'instance est accessible partout. 26
  • 27. Cycle de vie d’un objet  Création d’objet  Gestion de mémoire  Destruction d’objet 27
  • 28. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 28 Création d’objet: • 2 étapes:  allocation de mémoire pour stocker l’objet Customer + alloc Méthode de classe qui alloue l’espace fails to mémoire nécessaire pay  initialisation d’objet - init Méthode d’instance pour initialiser l’objet Création= allocation+ initialisation Person *person = nil; person = [[Person alloc] init]; 28
  • 29. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 29 Gestion de mémoire: //Pdf 406;;;PAG28 30 Mode managed(géré) via le mécanisme de comptage de référence( reference counting) : Customer • l’environnement d’exécution associe à chaque objet un compteur. fails to • Ce compteur représente le nombre de références pointant vers cet objet. pay • Si le compteur est> 0, l'objet est vivant et valide.  + alloc et –copy créent l’objet avec un compteur initialisé en 1  - retain incrémente le compteur  - release décrémente le compteur • Lorsque le compteur atteint 0 ,l’objet est détruit  - dealloc est appelée automatiquement • -(NSUInteger)retainCount Renvoi la valeur du compteur de référence sous forme d’entier. 29
  • 30. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 30 Le compteur de référence en action Person *person = [[Person alloc] init]; Customer [person retain]; fails to pay [person release]; [person release]; 30
  • 31. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 31 Les autorelease pools • les autorelease pools entrent en jeu dans la gestion de mémoire des objet dont on dispose pas directement de leur création via les méthodes alloc , init et copy • Un pool est une zone mémoire dans laquelle des objets sont alloués Customer fails to • Un autorelease pool est une instance de NSAutoreleasePool qui définit un champ d'objets temporaires pay • Ces objet sont ajoutés au autorelease pool actuel suite à un message - autoreleased . • Lorsque la autorelease pool est libérée tous les objets qui y ont été ajoutés sont automatiquement libérés. C'est un moyen simple de gérer la libération automatique des objets qui sont nécessaires temporairement. 31
  • 32. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 32 Customer fails to pay 32
  • 33. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 33 L’objet est créé Customer fails to pay 33
  • 34. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 34 L’objet est ajouté à la pool suite à -autorealease Customer fails to pay 34
  • 35. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 35 Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses objets Customer fails to pay 35
  • 36. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 36 Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses objets Customer fails to pay 36
  • 37. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 37 Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses objets Customer fails to pay 37
  • 38. Introduction Les bases d’Objective-C Création d’objet Autres concepts d’Objective-C Gestion de mémoire Les nouveautés d’Objective-C 2.0 Destruction d’objet Conclusions et perspectives 38 Lorsque la pool est libérée elle-même , elle envoie -realease à tous ses objets Customer fails to pay 38
  • 39. Autres concepts d’Objective C  L’héritage  Le polymorphisme et La surcharge  Protocole  Catégories  Run-time 39
  • 40. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 40 Héritage:  La réutilisation du code d'une classe mère dans une classe fille. Customer  Comme Java, Objective C est un langage orienté objet à fails to héritage simple. Héritage pay @interface NomClassFille: NomClassMere déclaration des méthodes @end  Objective-C n’implémente pas l’héritage multiple, et le compense par d’autres concepts: les protocoles et les catégories . 40
  • 41. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 41 Polymorphism e:  Le polymorphisme est un concept extrêmement puissant en POO, il permet de manipuler des objets sans en connaître le type tout en se basant sur la relation d’héritage.  Un objet a comme type non seulement sa classe mais aussi n’importe quelle classe dérivée.  L’Objective C supporte le polymorphisme simple qui est présenté par l’intermédiaire des protocoles . Surcharge:  Contrairement à C + +, Java et C #, l’Objective C ne supporte pas la surcharge des méthodes et des 41 opérateurs.
  • 42. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 42 Protocole :  Un protocole est un ensemble de méthodes définies pour être implémentées par des classes adhérentes.  Le protocole ne fournit donc pas d’implémentation, mais Customer juste la définition des méthodes. fails to pay Cette notion est reconnue en langage java par interface ( ne faut donc pas confondre avec la notion d'interface de objective C). les protocoles Declaration de protocole un fichier d’en-tête ( .h) sont déclarés dans @protocole Nom-protocole déclaration des méthodes @end 42
  • 43. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 43  Une classe peut implémenter un nombre quelconque de protocoles implémentation de protocole par une classe @interface NomClass :Nom_super_Class <proto1,proto2….> //implémentation @end  Son implémentation doit alors contenir une définition pour toutes les méthodes de tous les protocoles de la liste 43
  • 44. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 44 Les catégories : Les catégories permettent d’étendre les fonctionnalités d’une classe sans avoir besoin de définir une sous-classe en ajouter des méthodes à la classe existante. Customer La déclaration et l’implémentation d’une catégorie sont fails to similaires à celles d’une classe pay Catégorie #import « NomClassACatégoriser.h » @interface NomClassACatégoriser (NomCatégorie) // declaration des attributs et des méthodes @end @implementation NomClassACatégoriser (NomCatégorie) // declaration des variables // implémentation des méthodes 44
  • 45. Introduction Héritage Les bases d’Objective-C Polymorphisme et surcharge Autres concepts d’Objective-C Protocole Les nouveautés d’Objective-C 2.0 Catégories Conclusions et perspectives Run-Time 45 Run-Time:  Le système d'exécution en Objective C est un élément essentiel de la langue. Customer  Le run-time fournit le comportement de la liaison fails to dynamique, ainsi que quelques autres fonctionnalités pay très puissantes, comme le chargement dynamique de classes dans un programme en cours, prévoyant la persistance des objets, et de soutenir certaines des caractéristiques de l'héritage multiple.  Les capacités et la mise en œuvre de la composante temps d'exécution de l'Objective C a tendance à varier entre les compilateurs plus d'autres caractéristiques du langage. 45
  • 46. Les nouveautés d’Objective-C 2.0  Garbage Collector  @Properties,@ synthesize  @optional,@required  Dot Syntax 46
  • 47. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 @optional,@required Conclusions et perspectives Dot Syntax 47  2007 : Sortie de Mac OS X v10.5 Leopard Mise à jours des standards de l’objective-C Customer fails to  Nouveautés: pay  Outils de gestion de mémoire dynamique regroupés dans un système nommé garbage collector.  Ajout de mots clés :@proprty,@ synthesize  Modifications de syntaxe ( Dot Syntax) 47
  • 48. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 @optional,@required Conclusions et perspectives Dot Syntax 48 Garbage Collector:  Comme dans le monde java et .Net,La fonction principale d’un ramasse-miettes est de trouver les objets qui ne sont plus utilisés afin de libérer la mémoire qu’ils occupent.  L’activation du ramasse-miettes se fait au moment de la compilation, Customer et c’est donc une option à passer au to fails compilateur pay  Il existe trois modes différents pour la gestion automatique de la mémoire :  Unsupported (non compatible ): Le code n’est pas écrit pour la gestion automatique de mémoire et est donc incompatible avec le garbage Collector  Required (nécessaire ): Le garbage collector est requis car le code ne gère pas la mémoire (retain/release).  Supported (compatible): Cela signifie que le code peut s’exécuter en mode ramasse-miettes, mais également en mode géré 48
  • 49. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C @optional,@required Les nouveautés d’Objective-C 2.0 Dot Syntax Conclusions et perspectives 49 @Properties,@ synthesize  La synthèse automatique des accesseurs et modificateurs se fera avec : Customer fails to pay  @ Properties : génèration des déclarations de setter et des getter dans l’interface (.h)  @synthesize : génèration des implémentations de setter et des getter dans dans le fichier d’implémentation (.m) 49
  • 50. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C @optional,@required Les nouveautés d’Objective-C 2.0 Dot Syntax Conclusions et perspectives 50 @Properties:  Par défaut, les propriétés crées:  porteront respectivement le nom de nom/setNom pour le Customer getter et le setter fails to pay - (void) setMaChaine: (NSString @property NSString * *)chaine; maChaine; - (NSString *) maChaine;  sont en lecture et écriture (readwrite)  On peut modifier ces valeurs par défauts en ajoutant des attributs aux propriétés 50
  • 51. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 @optional,@required Conclusions et perspectives Dot Syntax 51 @Properties: Declaration: @propery (writability, setter, atomicity) type name;  Writability :readonly, readwrite  Setter semantic :assign, copy, retain Customer  Atomicity :atomic, nonatomic fails to pay On peut modifier ces valeurs par défauts en ajoutant des attributs aux propriétes : @property (getter=maChaine) NSString * maChaine; @property (setter=setMaChaine) NSString * maChaine; @property (getter=maChaine, setter=setMaChaine) NSString * maChaine; @property NSString * maChaine; @property (readwrite) NSString * maChaine; 51
  • 52. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 @optional,@required Conclusions et perspectives Dot Syntax 52  Lorsqu’une classe implémente un protocole, elle doit implémenter toutes ses méthodes .  Avec Objective-C 2.0, les nouveaux mots-clefs @optional Customer et @required permettent de distinguer des méthodes fails to optionnelles des méthodespay obligatoires. Declaration de protocole @protocole Nom-protocole @optional - (void) methodeoptionnelle ; @required - (void) methodheObligatoire ; @end 52
  • 53. Introduction Garbage Collector Les bases d’Objective-C @Properties,@ synthesize Autres concepts d’Objective-C Les nouveautés d’Objective-C 2.0 @optional,@required Conclusions et perspectives Dot Syntax 53 Dot Syntax :  C’est une nouvelle syntaxe introduite avec Objective C 2.0 utilisant un point (.) au lieu des crochets habituels ([ ]) int age= [person age] Customer ; int age=peron.age ; fails to [person setAge:newAge] ; pay peron.age = newAge;  Une meilleur lisibilité du code lorsque plusieurs messages doivent être imbriqués [[person child] setAge:newAge] ; peron.child.age = newAge; 53
  • 54. Etude comparative d’Objective C  Objective C VS Java  Autres Comparaisons 54
  • 55. Introduction Les bases d’Objective-C Objective C VS Java Les concepts d’orienté objet dans Objective-C Les nouveautés d’Objective-C 2.0 Autres Comparaisons Conclusions et perspectives 55 Java Objective C les API sont définies et mises en les API cohérentes sont définies par la Langage Orienté Objet à la fois Langage Orienté Objet compilé œuvre par les distributions Sun Java spécification OpenStep. compilé et interprété (en langage directement en langage machine Development Kit Ceci est mis en œuvre par GNUstep intermédiaire) et Mac OS X Cocoa. La syntaxe de Java est basé sur le est basé sur C, et les extensions OO utilise garbage collection pour la utilise la gestion de la mémoire langage C + + sont comparables à ceux de Smalltalk gestion de la mémoire manuelle, le comptage de référence, est typé statiquement, mais fournit les et garbage collection comme des est typé dynamiquement, mais fournit mécanismes de type-casting pour options également le typage statique contourner interfaces limitations du fournit des certaines fournit des protocoles typage statique Tas fixes Tas sont géré par l'OS et le système d'exécution 55
  • 56. Introduction Les bases d’Objective-C Objective C VS Java Les concepts d’orienté objet dans Objective-C Autres Comparaisons Les nouveautés d’Objective-C 2.0 Conclusions et perspectives 56 56
  • 57. 57 Merci pour votre Attention