Les classes, les objets et les instances

J'ai remarqué souvent une confusion quand il s'agit de classes, des objets et des instances. Ceux qui ne sont pas très instruits sur la programmation orientée objet confond souvent la véritable signification de ces termes. Je savais, cependant, qu'il ya deux écoles de pensée concernant la définition des classes et objets. J'aime l '"école" qui indique la définition de la classe comme un sujet possible, et donc, comme une instance de l'objet.

Il semble trivial, mais je n'ai - parler avec d'autres - d'être en "conflit" (façon de parler) et tombent ensuite dans la confusion, quand on utilise ces termes, à partir de l'hypothèse que si quelque chose les «autres» comme on les entend .

Je le vois de cette manière, une classe est une définition! Il est définit précisément une classe d'objets possible. La classe est l'ensemble des méthodes et propriétés (si vous voulez, nous pouvons également ajouter des événements - Quoi d'autre ... non seulement que des méthodes spéciales) qui sera propriétaire de l'objet.

Par exemple, quand nous écrivons en Actionscript ou tout autre langage orienté objet:

1
2
3
4
class MyClass {
Fonction MiaClass () {}
myMethod function () {}
}

Nous avons défini une classe et non un objet. Dans la limite que nous avons "défini" une "possible" l'objet. On pourrait même affirmer, à juste titre, que l'objet existe à l'exécution alors que la classe n'est pas (en vérité il ya des classes dynamiques qui peuvent être définies - et ensuite utilisé pour créer des objets - même à l'exécution). Exclure les classes statiques, bien sûr, que - finalement - ne sont rien de plus que des sous-instances (ou les instances cachée), puis des objets réels.

Mais quand nous avons:

1
MiaClasse = new MiaClasse ( ) ; var myObject: MaClasse = new MaClasse ();

! Voici mioOggetto est une instance de MiaClasse() ! . C'est mioOggetto est un sujet - en fait - de type MiaClasse() .

. En conséquence, leur philosophie à des objets, des objets de type MiaClasse() je peux en avoir autant que je veux, ce qui ne peut pas être - la définition même - de MiaClasse() . Par exemple, si le rapport est vrai et il est logique:

1
2
3
4
5
MiaClasse = new MiaClasse ( ) ; var mioOggetto_1: MaClasse = new MaClasse ();
MiaClasse = new MiaClasse ( ) ; var mioOggetto_2: MaClasse = new MaClasse ();
MiaClasse = new MiaClasse ( ) ; var mioOggetto_3: MaClasse = new MaClasse ();
...
MiaClasse = new MiaClasse ( ) ; var mioOggetto_n: MaClasse = new MaClasse ();

Cela n'a aucun sens:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass {
Fonction MiaClass () {}
MioMetodo_2 function () {}
}

class MyClass {
Fonction MiaClass () {}
MioMetodo_2 function () {}
}

class MyClass {
Fonction MiaClass () {}
MioMetodo_3 function () {}
}

Instance d'objet et, par conséquent, coïncident et sont utilisés en alternance pour la même signification dans des contextes différents.

Probablement quelqu'un se soucie pas beaucoup ... la question de l'exhaustivité des exigences ... :)

2 commentaires à "classes, objets, et les instances"

  1. 3 septembre 2008 Actionscript 3.0 pour les débutants: leçon n ° 2 | Undolog.com :

    [...] Si elle est sèche orientée programmation objet, je recommande la lecture d'au moins classes, objets et instances! [...]

  2. 11 novembre 2008 Actionscript 3.0 pour les débutants: leçon n ° 4 | Undolog.com :

    [...] Les variables statiques ou constantes sont associées à la classe et l'instance de la classe! Voir les classes, objets et les instances. C'est une différence importante, en fait, si nous écrivons dans notre cas - comme un [...]

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL