Quelle est la meilleure façon de définir les mots "classe" et "objet" à quelqu'un qui ne les a pas utilisés?
Mon voisin prend "Intro to Java", et m'a demandé de vous aider à expliquer quelques-uns des concepts du premier jour. J'ai réalisé que depuis que je fais cela tous les jours, je n'ai pas l'esprit du débutant, et il est difficile de relater certaines de ces choses à partir de zéro.
Celui que je n’explique pas vraiment pour moi est «c’est quoi, une classe?
Le mieux que j'ai à ce jour:
Une variable contient une sorte de donnée; une variable peut être un prénom, une autre variable peut être votre poids en livres.
Une méthode est une fonction, elle fait des choses et peut faire des choses avec ces variables. Une méthode peut afficher votre nom à l'écran ou vous indiquer le poids que vous devez perdre pour obtenir un bon ratio d'IMC.
Un objet contient les variables et les méthodes; un objet peut vous représenter, un second objet peut me représenter.
Un class est une sorte de modèle ou de modèle qui décrit les méthodes et les variables qui figureront dans chaque objet. Un objet est une instanciée (instance d'une) classe; un objet est quelque chose, alors que la classe est simplement le projet de le faire.
En reprenant l'exemple, nous avons un objet Personne, qui est instancié pour contenir les données d'Alice, et un autre objet Personne instancié pour contenir les données de Bob, et un autre pour Carol, etc.
Comment puis-je adapter cet exemple pour avoir plus de sens et/ou quelle est la meilleure approche? La Parole "instanciée" semble trop lourde à ce stade.
(Je pense que c'est une question utile, mais est évidemment subjective; marqué comme wiki de la communauté.)
Une classe et quelques instances de classe:
Classe: Objet :: Plan: Bâtiment
"Car" est une classe. Ma voiture, assis dans mon allée, est un exemple (objet).
La programmation orientée objet consiste à créer des programmes utilisant comme blocs de construction, des "choses" existant dans le monde réel, ces choses du monde réel sont appelées objets, d'où objet orienté
Par exemple, si vous créez un programme de carnet d'adresses, vous pouvez définir les objets suivants:
person, address, phone
Parmi beaucoup d'autres. Ce sont des objets de la vie réelle, et vous décrivez votre programme en termes de ces abstractions.
Dans cet esprit, vous pouvez commencer à décrire certains concepts.
Classe est utilisé pour définir les caractéristiques d'un objet. Une classe sert uniquement de modèle ou de modèle. Par exemple, pour toutes les personnes de votre carnet d'adresses, vous pouvez dire qu'elles auront toutes:
Person:
- name
- last name
- phone number
- address
Etc.
Une adresse peut avoir:
Address:
- street
- number
- city
- Zip code
- country
Etc. Comme vous pouvez le constater, une classe peut être définie en fonction d'autres classes, par exemple, dans ce contexte, une personne a une adresse.
Un Object est une instance particulière d'une classe donnée. Lorsque vous ajoutez une entrée à votre carnet d'adresses, vous créez un objet et complétez les attributs.
onePerson ofType Person is (
- name = "Oscar"
- last name = "Reyes"
- phone number = "56 58 11 11"
- address = anAddress ofType Address (
- street = "Tecolotes"
- number = 32
- city = "D.F."
- Zip code = 23423
- country = "Mexico"
)
)
Donc, cet objet est une classe instanciée avec des données. Les autres entrées du carnet d'adresses sont d'autres objets avec des données différentes.
Cela montre la différence entre eux.
Il existe d’autres concepts pertinents dans OOP qui méritent d’être listés et qui sont liés aux concepts d’objet et de classe:
Abstraction Vous n'avez pas besoin de lister tous les attributs d'une personne, de l'utiliser. par exemple, dans ce cas, vous ne vous souciez pas de savoir si cette personne est célibataire ou mariée, même si, dans la vraie vie, elle est célibataire ou mariée.
Encapsulation Les attributs de la personne sont cachés dans d'autres objets et sont accessibles via des méthodes, ce qui évite la corruption des données.
Polymorphisme Un type différent peut répondre différemment au même message ou à la même méthode.
Héritage classes peut avoir des sous-classes, des attributs et des comportements qui héritent des caractéristiques des super classes.
Une description de classe est comme un plan pour une maison. Toutes les maisons construites à partir de ce plan sont des objets de cette classe. Une maison donnée est un exemple. Un locataire peut être une variable changeante dans la maison. Un exemple de méthode est la procédure par laquelle le bureau de poste envoie et reçoit des messages (courrier) au domicile via sa boîte aux lettres.
L'un des exemples que j'utilise au cours de mes cours Java est la Human
classe.
Tous ceux qui lisent ceci sont une Human
(je l'espère le moins!), Nous avons tous nos différences nos ressemblances mais à la fin nous sommes tous Human
(après tout).
Chaque Human
(appelée instance ou objet) possède des caractéristiques spécifiques telles que la couleur des yeux ou la voix qui sont les champs (vous avez appelé cela variables, mais le bon nom serait champs). Mais les valeurs sont différentes d'une Human
instance à une autre.
Il existe également une connaissance commune, partagée avec l'humanité, des principes tels que le "théorème de Pythagore". Cette connaissance est commune, elle peut être interprétée comme un champ statique (je sais que c'est une exagération), ce qui signifie que cette connaissance n'est pas seulement contenue dans un humain, mais dans l'humanité.
Chaque Human
peut faire des choses comme marcher, parler, etc. C'est ce qu'on appelle méthode, marcher est le même pour tout le monde, mais quand je marche, tout le monde ne marche pas. Le fait de marcher n’affecte que la Human
instance qui le fait, mais il est néanmoins défini par la Human
classe
Si vous voulez approfondir la POO, Enseigner OOP aux non-programmeurs
Un objet est une chose . Une classe est une catégorie de choses.
"Personne" est une classe; vous êtes un objet, une instance de la classe Person. En outre, le mot "vous" peut être considéré comme une variable puisqu'il fait référence à une personne, mais pas toujours à la même personne.
classe == emporte-pièce, objet == cookie.
classe :: homme ou femme
objet :: moi, vous ...
Si et seulement s'il est familier avec la théorie des formes de Platon, vous pouvez faire une analogie où les classes sont comme les formes de Platon et les objets sont comme les objets du monde réel de Platon.
Voir cet article pour une description complète.
Une classe Java est la structure ou le schéma directeur d'un objet et l'objet est l'instance (création de mémoire) d'une classe.
Exemple: la voiture est un objet (entité du monde réel). Tout d’abord, définissez la structure ou le design d’une voiture, c’est sa classe et lorsqu’il est conçu, de convertir une voiture du monde réel car c’est un objet. la voiture (objet) travaille maintenant au nom de la conception d'une voiture (classe).
La classe peut être définie comme l'empreinte bleue ou le modèle qui définit les attributs, les actions, les états de l'entité et Object serait celui qui serait mis en œuvre pour l'entité.
Classe: fille
Objet: cette fille, cette fille, ma fille ... euh peut-être pas.
Oui, toutes les filles devraient avoir les propriétés d'une fille (classe dans ce cas).
Si votre voisin est dans la philosophie classique, les classes sont les formes de Platon et les objets sont les choses que nous voyons tous les jours et qui sont basées sur les formes.
Je les définis toujours comme un plan et un produit.
Un plan décrit le produit complet dans les moindres détails, le produit est le résultat qui sort de la machine.
classe: type de variable personnalisé
objet: une variable dont le type est défini par l'utilisateur (si vous ne comptez pas ceux qui sont intégrés)
Cette intervention de Guy L. Steele pourrait vous intéresser: http://video.google.com/videoplay?docid=-8860158196198824415#
L'ADN du panda est une classe. Un panda qui court, mange et exécute des activités semblables à un panda est un objet.
Object est une instance d'une classe Variable est une instance d'un type
Cela étant dit, une classe peut ressembler à "taper sur des stéroïdes": Elle peut avoir: Des variables pouvant provenir de n'importe quel type ou d'objets d'une autre classe , Qui peut agir sur les variables de classe de la même manière que différents types ont leurs méthodes (par exemple +(bool,bool)
) peut accéder aux variables de classe et tout est défini par vous-même!
Vous pouvez utiliser les classes pour modéliser un problème de manière optimale. Mais il y a parfois d'autres façons de le faire;) (pas seulement la POO)
S'ils apprennent à programmer OO, demandez-leur d'utiliser BlueJ . Ils devraient comprendre les différences après avoir parcouru le premier tutoriel.
Vous définissez les classes et, lorsque vous les instanciez, elles apparaissent réellement au bas de l'interface graphique, à quel point vous pouvez appeler des méthodes sur celles-ci.
Cela aide vraiment à faire passer le message mieux que toute analogie que vous voulez essayer. Même si vous clouez l'analogie, elle ne se traduit pas encore en code pour quelqu'un qui n'a pas encore appris OO (même si pour nous tous, cela semble vraiment naturel et toutes ces descriptions ont un sens.)
Les détails de votre question contiennent de très bonnes définitions de tous les termes. Voici une analogie que j'ai trouvée assez utile - je l'ai énumérée dans une sorte d'approche descendante:
classe Employé . Comme vous le dites, il s'agit d'une sorte de "modèle" ou de "modèle" contenant des détails génériques sur all types d'employés dans une organisation - considérons le director , a chef de projet , a développeur , a sous-traitant , ou membre du Housekeeping personnel. Ce sont tous des employés: par conséquent, ils sont tous instances de la classe, ou objets.
Tous les objets ont certains attributs en commun - Ils sont tous attribués, par exemple, un ID d'employé . Ils tirent tous un salaire . Ils ont tous une désignation . On pourrait les appeler les variables membres}, car ils existent pour tous les objets, mais leurs valeurs sont clairement différentes en fonction de l'objet dont ils sont membres.
Et enfin, il y a quelques fonctions qui doivent être exécutées pour tous les employés - par exemple onBoarding () ou CalculateSalary () .
Nous pouvons également comprendre le concept de classe et d’objet comme: , Une classe étant un modèle, prenons les deux exemples suivants: Exemple 1: une recette de gâteau est un modèle, donc c’est une classe et les gâteaux qui sont faits suivant la recette sont les objets. Exemple 2: Un briquetier est une classe et les briques sont des objets
Un objet est un groupe de données et de fonctionnalités associées. Le groupe de données et la fonctionnalité seront définis dans la classe. La classe est la conception ou la spécification de l'objet.
Le cours enseigne aux objets comment se comporter. Une classe est un modèle pour un objet. Il indique à la machine virtuelle comment créer un objet de ce type particulier. Chaque objet fabriqué à partir de cette classe peut avoir ses propres valeurs pour les variables d'instance de cette classe. Exemple: Vous pouvez utiliser la classe Button pour créer des dizaines de boutons différents, et chaque bouton peut avoir sa propre couleur, taille, forme, fonctionnalité.
La programmation orientée objet n'est qu'un autre moyen de représenter les structures de données abstraites dans les programmes. Dans la terminologie orientée objet, le type s'appelle une classe et la variable de ce type s'appelle un objet. Plus sur type <-> classe, variable <-> objet correspondance.
Class: Human being
Object : Man, Woman
Class : Fruit
Object : Apple, Banana, Mango ...
Class : Mobile Phone
Object : Apple , Samsung , LG ...
Class : Food
Object : Pizza, Rice ....