Objective C

Objective C

Objective-C

Objective-C
Importez le logo de ce langage de programmation
Apparu en 1986
Auteur Brad Cox et Tom Love
Paradigme orienté objet, réflexif
Typage dynamique, statique, faible
Influencé par C, Smalltalk
A influencé TOM, Java
Implémentations OpenStep, Cocoa, GNUstep
Système d'exploitation UNIX, Mac OS
Licence Libre

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 faible typage, son typage dynamique et son chargement dynamique. Contrairement au C++, il ne permet pas l'héritage multiple mais il existe toutefois des moyens de combiner les avantages de C++ et d'Objective-C.

Aujourd'hui, il est principalement utilisé dans deux systèmes d'exploitation. L'un est GNU avec sa bibliothèque de classes libre GNUstep, l'autre est Mac OS X d'Apple (et son dérivé iPhone OS), basé sur la bibliothèque de classes Cocoa. GNUstep et Cocoa sont les successeurs de l'API OpenStep, utilisé dans les systèmes d'exploitation NeXTSTEP et OPENSTEP.

Sommaire

Historique

La fin des années 1970 est marquée par la popularité naissante et rapide du langage C inventé plus tôt dans la décennie par Dennis Ritchie aux Laboratoires AT&T Bell. Cette popularité est éperonnée par une autre encore plus grande, celle du système d'exploitation UNIX totalement écrit en C.[1] À la charnière des décennies 1970-1980, la pratique courante du génie logiciel est basée sur la programmation structurée. L'implémentation de la programmation structurée est utilisée dans le but de "casser" des programmes en plus petites parties, pour les rendre plus faciles à être exécutés à mesure qu'ils deviennent larges. Cependant, alors que la résolution de problèmes devient de plus en plus grande et compliquée, la programmation structurée devient moins utile au fur et à mesure que de plus en plus de procédures doivent être écrites, ce qui mène à des structures de contrôle complexes et une faible réutilisation de code. À l'époque, beaucoup voient dans l'orienté-objet une possible solution à ce problème.

Plusieurs personnes créent alors des extensions au C pour y ajouter l'orienté-objet, c'est le cas de Bjarne Stroustrup qui développe le C++ en 1979 dans les mêmes laboratoires dans lesquels a vu le jour le C de Dennis Ritchie. La naissance de l'Objective-C arrive dans le même cadre, Brad Cox le met au point au début des années 1980. Le langage est basé sur un autre, le Smalltalk-80, et est destiné à être une couche supplémentaire au C pour permettre la création et la manipulation d'objets[2].

Le code compilé Objective-C s'exécute dans un léger environnement d'exécution (runtime) écrit en C qui ajoute peu à la taille de l'application.

Le premier système d'exploitation à utiliser Objective-C fut NeXTStep, de la société NeXT, fondée par Steve Jobs.

Objective-C est beaucoup utilisé sur Macintosh, notamment pour les API Cocoa de Mac OS X.

Il existe également une implémentation libre du framework d'OpenStep appelée GNUstep qui est multiplateforme et fonctionne notamment sous GNU/Linux, Microsoft Windows et la plupart des UNIX.

Descriptif du langage

En Objective-C, tout est objet tout comme en Smalltalk dont il s'inspire fortement. C'est donc un langage fortement orienté objet. L'héritage simple induit un arbre d'héritage avec une racine : la classe NSObject, dans le cas de Cocoa/NeXTStep, ou Object dans le cas de GNUstep, c'est à partir d'elle que vont dériver toutes les classes. Par exemple, un objet de classe NSString, ou NSArray, dérive de la classe NSObject (indirectement). NSMutableArray dérive de la classe NSArray, qui est donc sa superclasse. D'après certains de ses utilisateurs, c'est là que la puissance d'Objective-C apparaît : au contraire de C++ ou autres langages ne l'incluant pas, le typage faible permet de manipuler plus simplement des données.

En effet, plutôt que de devoir manipuler de nombreux types, il n'y en a que quelques uns, par exemple dans le cas de Cocoa :

  • id qui est un pointeur vers n'importe quel type d'objet.
  • BOOL qui est identique à char de C, mais utilisé comme une valeur booléenne. 0 est considéré comme faux, et tout ce qui n'est pas 0, est considéré comme vrai (A, a, 1, 2, etc.)
  • YES qui vaut 1.
  • NO qui vaut 0.
  • IBOutlet est un macro qui ne sert qu'à indiquer à Interface Builder qu'il est en face d'un « Outlet ».
  • IBAction qui équivaut à void, et qui indique à Interface Builder qu'il est une action (ou méthode de classe) devant être appelée par exemple par un bouton pressé.
  • nil qui est identique à NULL. Il sera préféré à celui-ci, car un « message » envoyé à nil, ne crée pas une exception, et donc un plantage du programme, mais ne renvoie « rien », donc « nil ».

De plus toutes les variables d'instances de classe sont par défaut protégées, et les méthodes de classe publiques. Il permet donc aux programmeurs d'avoir une programmation plus rigoureuse, tout en étant plus rapide, et en respectant les concepts de la POO.

Un autre aspect est celui du modèle de conception KVC (Key-Value Coding), lui aussi inspiré de Smalltalk qui définit l'accès à une variable par son nom. Par exemple, dans le cas d'une classe Personne, avec une variable d'instance Surname, de type NSString :

@interface Personne : NSObject
{
 
     NSString *surname;
 
}
 
//...
 
@end

Afin de différencier sans ambiguïté le code en C et celui en Objective-C, les instructions en Objective-C sont précédés de l'arobase. Nous pouvons donc fixer la valeur de la variable surname d'une instance de Personne de cette façon :

// On crée un pointeur vers un objet de la classe Personne, qu'on a d'abord alloué dans l'espace mémoire, et initialisé.
Personne *exemple = [[Personne alloc] init];
//On envoie un message au pointeur exemple qui va le rediriger vers l'objet vers lequel il pointe, pour fixer la valeur de la clef surname.
[exemple setValue:@"Paul" forKey:@"surname"];

Notes et références

  1. (en) James Duncan Davidson & Apple Computer, Learning Cocoa with Objective-C, O'reilly, 2002, 382 p. (ISBN 9780596003012), p. 1 
  2. James Duncan Davidson, op. cit.

Voir aussi

Liens connexes

Liens externes

Bibliographie

  • Andrew M. Duncan (trad. Guillaume Merck), Objective-C, O'reilly, coll. « Précis & concis / Fondamentaux du langage », Paris, 2003, 135 p. (ISBN 2-84177-257-8) 
  • (en) The Objective-C 2.0 Programming Language, Apple, Cupertino, 08 juillet 2008, 147 p. 
  • (en) Brad J. Cox, Andrew J. Novobilski, Object-oriented Programming, An Evolutionary Approach, Addison-Wesley, 1991, 320 p. (ISBN 978-0201548341) 
  • (en) James Duncan Davidson & Apple Computer, Learning Cocoa with Objective-C, O'reilly, 2002, 382 p. (ISBN 9780596003012) 
  • (en) Stephen G. Kochan, Programming in Objective-C, Sams Publishing, 2003 (réimpr. 2004), 576 p. (ISBN 978-0672325861) 
  • (en) Stephen G. Kochan, Programming in Objective-C 2.0, Addison-Wesley, 2008, 600 p. (ISBN 978-0321566157) 
  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « Objective-C ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Objective C de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Objective-C — Paradigm(s) reflective, object oriented Appeared in 1983 Designed by Tom Love Brad Cox Developer Apple Inc. Typing discipline …   Wikipedia

  • Objective-C — Entwickler: Brad Cox, Tom Love Typisierung: stark, statisch, explizit Einflüsse: Smalltalk, C (Programmiersprache) Betriebssystem: Mac OS X …   Deutsch Wikipedia

  • Objective-C++ — Objective C, auch kurz ObjC genannt, erweitert die Programmiersprache C um Sprachmittel zur objektorientierten Programmierung. Objective C++ erlaubt teilweise die Mischung von Objective C mit C++ Code mit dem Ziel, älteren Code verwenden zu… …   Deutsch Wikipedia

  • Objective-c — Objective C, auch kurz ObjC genannt, erweitert die Programmiersprache C um Sprachmittel zur objektorientierten Programmierung. Objective C++ erlaubt teilweise die Mischung von Objective C mit C++ Code mit dem Ziel, älteren Code verwenden zu… …   Deutsch Wikipedia

  • Objective C — Objective C, auch kurz ObjC genannt, erweitert die Programmiersprache C um Sprachmittel zur objektorientierten Programmierung. Objective C++ erlaubt teilweise die Mischung von Objective C mit C++ Code mit dem Ziel, älteren Code verwenden zu… …   Deutsch Wikipedia

  • Objective C++ — Objective C, auch kurz ObjC genannt, erweitert die Programmiersprache C um Sprachmittel zur objektorientierten Programmierung. Objective C++ erlaubt teilweise die Mischung von Objective C mit C++ Code mit dem Ziel, älteren Code verwenden zu… …   Deutsch Wikipedia

  • Objective-C — Класс языка: объектно ориентированный, мультипарадигмальный: рефлексивно ориентированный Появился в: 1986 Автор(ы): Бред Кокс Типизация данных: нестрогая, статическая / динамическая …   Википедия

  • Objective-C — Información general Paradigma orientado a objetos Apareció en 1980 Diseñado por Brad Cox Tipo de dato …   Wikipedia Español

  • Objective-J — Paradigm(s) Multi paradigm: reflective, object oriented, functional, imperative, scripting Appeared in 2008 Developer 280 North, Inc. Typing discipline dynamic, weak …   Wikipedia

  • Objective-C — Apparu en 1983 Auteur Brad Cox et Tom Love Paradigme orienté objet, réflexif …   Wikipédia en Français

  • Objective-J — Класс языка: мультипарадигмальный: рефлексивно ориентированное, объектно ориентированное, функциональное, императивное, скриптовое Появился в: 2008 Типизация данных: динамическая, слабая, утиная …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”