Je ne comprend rien à tout ce qui touche aux classes, instance, objet, référencement, la différence entre attribut d'instance et de classe..etc
J'ai beau lire des articles dessus j'y pige que dalle, pourtant j'ai vraiment envie d'apprendre, mais j'ai l'impression d'avoir sauté tout un chapitre dans mon cours de java..
Bref, reprenons aux bases,
Une classe, c'est le fichier qu'on crée sur l'IDE (chez moi, eclipse) pour y écrire du code, il se trouve dans un package, qui est lui même dans un dossier source, qui est lui même dans le dossier du projet,
Pour l'instant c'est correct ?
Alors c'est quoi une instance? une classe qui à un role comme une sorte de sous-classe? Comment on crée ce fichier?
La class c'est le plan de construction, l'instance c'est la construction
Il y a des tonnes de videos en ligne qui explique la difference. Qu'est ce que tu ne comprends pas?
Une classe n'est pas un fichier.
C'est le fichier qui doit avoir le même nom que la classe.
C'est comme un passeport, il doit avoir le même nom que la personne. Mais quand un enfant te demande "c'est quoi une personne ?", tu lui dis pas "c'est un passeport".
https://www.google.com/search?q=poo+basics
A simple example would be a class representing a person. The person class would contain attributes to represent information such as the person’s age, name, height, etc. The class definition might also contain functions such as "sayMyName" which would simply print that person’s name to the screen.
A family could be constructed by instantiating person objects from the class for each member of the family
class Person
{
}
Person joseph = new Person();
Person amanda = new Person();
Person enzo = new Person();
Person adolf = new Person();Une classe Person, 4 instances (objets).
Le 11 novembre 2021 à 23:15:08 :
Je ne comprend rien à tout ce qui touche aux classes, instance, objet, référencement, la différence entre attribut d'instance et de classe..etcJ'ai beau lire des articles dessus j'y pige que dalle, pourtant j'ai vraiment envie d'apprendre, mais j'ai l'impression d'avoir sauté tout un chapitre dans mon cours de java..
Bref, reprenons aux bases,
Une classe, c'est le fichier qu'on crée sur l'IDE (chez moi, eclipse) pour y écrire du code, il se trouve dans un package, qui est lui même dans un dossier source, qui est lui même dans le dossier du projet,
Pour l'instant c'est correct ?Alors c'est quoi une instance? une classe qui à un role comme une sorte de sous-classe? Comment on crée ce fichier?
Moi je me représente souvent une classe comme un moule à gâteau, et tout les gâteaux qu’on peut produire avec cette classe ce sont les instances de celles-ci.
Le moule donne la forme globale du gâteau, mais comme pour une classe où tu peux changer les valeurs de ces attributs, tu peux également faire différent gâteau avec un moule (chocolat, framboise,…).
La différence entre attribut d’instance et de classe c’est très simple. un attribut d’instance c’est rattaché à un objet, imaginons un objet voiture qui a un attribut couleur, couleur est un attribut d’instance.
Alors qu’un attribut de classe c’est plus global, ce n’est pas rattaché à un objet particulier, en reprenant l’exemple des voitures un attribut de classe pourrait être : nombreTotalDeVoiture
Le nombre total de voitures n’est pas la propriété d’une seule voiture mais est plus globale.
Un petit rappel général de comment ça fonctionne en java: Tu as tout d’abord ton fichier main qui contient une classe main où tu auras le fil d’exécution de ton programme, sa logique, c’est là que tu instancie tes objets et fais appel aux méthodes de ceux-ci.
Puis tu as à côté tes autres fichiers avec en gros à chaque fois une classe différente que tu vas décrire et que tu pourras appeler dans le main.
Le 12 novembre 2021 à 06:56:47 :
Une classe n'est pas un fichier.
C'est le fichier qui doit avoir le même nom que la classe.C'est comme un passeport, il doit avoir le même nom que la personne. Mais quand un enfant te demande "c'est quoi une personne ?", tu lui dis pas "c'est un passeport".
https://www.google.com/search?q=poo+basics
A simple example would be a class representing a person. The person class would contain attributes to represent information such as the person’s age, name, height, etc. The class definition might also contain functions such as "sayMyName" which would simply print that person’s name to the screen.
A family could be constructed by instantiating person objects from the class for each member of the family
class Person { } Person joseph = new Person(); Person amanda = new Person(); Person enzo = new Person(); Person adolf = new Person();Une classe Person, 4 instances (objets).
Du coup une instance c'est une variable?
enfin, variable/constante
Le 12 novembre 2021 à 05:03:21 :
Il y a des tonnes de videos en ligne qui explique la difference. Qu'est ce que tu ne comprends pas?
La totalité de ces mêmes vidéo on soit un charabia anglophone trop complexe pour moi, soit elles utilisent toutes des "images" pour faire des métaphore pour rendre ça "simple" mais moi ça me perd plus qu'autre chose..
Personne peut m'expliquer concrètement ce qu'il se passe dans l'ordinateur?
Le 12 novembre 2021 à 07:32:56 :
Le 11 novembre 2021 à 23:15:08 :
Je ne comprend rien à tout ce qui touche aux classes, instance, objet, référencement, la différence entre attribut d'instance et de classe..etcJ'ai beau lire des articles dessus j'y pige que dalle, pourtant j'ai vraiment envie d'apprendre, mais j'ai l'impression d'avoir sauté tout un chapitre dans mon cours de java..
Bref, reprenons aux bases,
Une classe, c'est le fichier qu'on crée sur l'IDE (chez moi, eclipse) pour y écrire du code, il se trouve dans un package, qui est lui même dans un dossier source, qui est lui même dans le dossier du projet,
Pour l'instant c'est correct ?Alors c'est quoi une instance? une classe qui à un role comme une sorte de sous-classe? Comment on crée ce fichier?
Moi je me représente souvent une classe comme un moule à gâteau, et tout les gâteaux qu’on peut produire avec cette classe ce sont les instances de celles-ci.
Le moule donne la forme globale du gâteau, mais comme pour une classe où tu peux changer les valeurs de ces attributs, tu peux également faire différent gâteau avec un moule (chocolat, framboise,…).
La différence entre attribut d’instance et de classe c’est très simple. un attribut d’instance c’est rattaché à un objet, imaginons un objet voiture qui a un attribut couleur, couleur est un attribut d’instance.
Alors qu’un attribut de classe c’est plus global, ce n’est pas rattaché à un objet particulier, en reprenant l’exemple des voitures un attribut de classe pourrait être : nombreTotalDeVoiture
Le nombre total de voitures n’est pas la propriété d’une seule voiture mais est plus globale.
Un petit rappel général de comment ça fonctionne en java: Tu as tout d’abord ton fichier main qui contient une classe main où tu auras le fil d’exécution de ton programme, sa logique, c’est là que tu instancie tes objets et fais appel aux méthodes de ceux-ci.
Puis tu as à côté tes autres fichiers avec en gros à chaque fois une classe différente que tu vas décrire et que tu pourras appeler dans le main.
mais si tout ça est dans le même unique fichier class, pourquoi faire autant de charabia et de complication alors que c'est juste tout un tas de variable?
c'est quoi la différence entre "int nombreDeVoiture" et "String couleur" ?
Je pense que je commence à comprendre la subtile """""""""""""""""différence"""""""""""""" entre classe et instance(=objet) mais j'y vois pas l’intérêt.
Personne peut m'expliquer concrètement ce qu'il se passe dans l'ordinateur?
01110011 01100101 01101110 01100100 00100000 01101110 01110101 01100100 01100101 01110011
Il ne faut pas chercher ce qui se passe dans l’ordinateur, les classes et plus généralement la POO ne sont pas des concepts qui existent physiquement. C’est une abstraction théorique, une "vue de l’esprit", contrairement à d’autres concepts comme les pointeurs qui ont une correspondance directe avec le matériel
Le 12 novembre 2021 à 10:35:35 :
Personne peut m'expliquer concrètement ce qu'il se passe dans l'ordinateur?
01110011 01100101 01101110 01100100 00100000 01101110 01110101 01100100 01100101 01110011
pas mal ![]()
Le 12 novembre 2021 à 10:35:20 :
Le 12 novembre 2021 à 07:32:56 :
Le 11 novembre 2021 à 23:15:08 :
Je ne comprend rien à tout ce qui touche aux classes, instance, objet, référencement, la différence entre attribut d'instance et de classe..etcJ'ai beau lire des articles dessus j'y pige que dalle, pourtant j'ai vraiment envie d'apprendre, mais j'ai l'impression d'avoir sauté tout un chapitre dans mon cours de java..
Bref, reprenons aux bases,
Une classe, c'est le fichier qu'on crée sur l'IDE (chez moi, eclipse) pour y écrire du code, il se trouve dans un package, qui est lui même dans un dossier source, qui est lui même dans le dossier du projet,
Pour l'instant c'est correct ?Alors c'est quoi une instance? une classe qui à un role comme une sorte de sous-classe? Comment on crée ce fichier?
Moi je me représente souvent une classe comme un moule à gâteau, et tout les gâteaux qu’on peut produire avec cette classe ce sont les instances de celles-ci.
Le moule donne la forme globale du gâteau, mais comme pour une classe où tu peux changer les valeurs de ces attributs, tu peux également faire différent gâteau avec un moule (chocolat, framboise,…).
La différence entre attribut d’instance et de classe c’est très simple. un attribut d’instance c’est rattaché à un objet, imaginons un objet voiture qui a un attribut couleur, couleur est un attribut d’instance.
Alors qu’un attribut de classe c’est plus global, ce n’est pas rattaché à un objet particulier, en reprenant l’exemple des voitures un attribut de classe pourrait être : nombreTotalDeVoiture
Le nombre total de voitures n’est pas la propriété d’une seule voiture mais est plus globale.
Un petit rappel général de comment ça fonctionne en java: Tu as tout d’abord ton fichier main qui contient une classe main où tu auras le fil d’exécution de ton programme, sa logique, c’est là que tu instancie tes objets et fais appel aux méthodes de ceux-ci.
Puis tu as à côté tes autres fichiers avec en gros à chaque fois une classe différente que tu vas décrire et que tu pourras appeler dans le main.
mais si tout ça est dans le même unique fichier class, pourquoi faire autant de charabia et de complication alors que c'est juste tout un tas de variable?
c'est quoi la différence entre "int nombreDeVoiture" et "String couleur" ?
Je pense que je commence à comprendre la subtile """""""""""""""""différence"""""""""""""" entre classe et instance(=objet) mais j'y vois pas l’intérêt.
La différence c'est que que avec la couleur tu peux faire voiture1.couleur pour récupérer la couleur de la voiture1 alors qu'avec nombreDeVoiture tu ne l'appelles pas sur un objet spécifique mais sur la classe.
Ce sont des concepts qui ce comprenne mieux en programmant, donc je te conseillerais de faire des projets tu comprendrais leurs utilité ainsi.
Le 12 novembre 2021 à 10:36:24 :
Il ne faut pas chercher ce qui se passe dans l’ordinateur, les classes et plus généralement la POO ne sont pas des concepts qui existent physiquement. C’est une abstraction théorique, une "vue de l’esprit", contrairement à d’autres concepts comme les pointeurs qui ont une correspondance directe avec le matériel
Wow, ça c'est l'explication qui ma le plus aidé pour l'instant, j'ai l'impression de tout mieux comprendre ![]()
moi qui cherchais désespérément comment crée un fichier "instance1" sur eclipse
Le 12 novembre 2021 à 10:42:26 :
Le 12 novembre 2021 à 10:35:20 :
Le 12 novembre 2021 à 07:32:56 :
Le 11 novembre 2021 à 23:15:08 :
Je ne comprend rien à tout ce qui touche aux classes, instance, objet, référencement, la différence entre attribut d'instance et de classe..etcJ'ai beau lire des articles dessus j'y pige que dalle, pourtant j'ai vraiment envie d'apprendre, mais j'ai l'impression d'avoir sauté tout un chapitre dans mon cours de java..
Bref, reprenons aux bases,
Une classe, c'est le fichier qu'on crée sur l'IDE (chez moi, eclipse) pour y écrire du code, il se trouve dans un package, qui est lui même dans un dossier source, qui est lui même dans le dossier du projet,
Pour l'instant c'est correct ?Alors c'est quoi une instance? une classe qui à un role comme une sorte de sous-classe? Comment on crée ce fichier?
Moi je me représente souvent une classe comme un moule à gâteau, et tout les gâteaux qu’on peut produire avec cette classe ce sont les instances de celles-ci.
Le moule donne la forme globale du gâteau, mais comme pour une classe où tu peux changer les valeurs de ces attributs, tu peux également faire différent gâteau avec un moule (chocolat, framboise,…).
La différence entre attribut d’instance et de classe c’est très simple. un attribut d’instance c’est rattaché à un objet, imaginons un objet voiture qui a un attribut couleur, couleur est un attribut d’instance.
Alors qu’un attribut de classe c’est plus global, ce n’est pas rattaché à un objet particulier, en reprenant l’exemple des voitures un attribut de classe pourrait être : nombreTotalDeVoiture
Le nombre total de voitures n’est pas la propriété d’une seule voiture mais est plus globale.
Un petit rappel général de comment ça fonctionne en java: Tu as tout d’abord ton fichier main qui contient une classe main où tu auras le fil d’exécution de ton programme, sa logique, c’est là que tu instancie tes objets et fais appel aux méthodes de ceux-ci.
Puis tu as à côté tes autres fichiers avec en gros à chaque fois une classe différente que tu vas décrire et que tu pourras appeler dans le main.
mais si tout ça est dans le même unique fichier class, pourquoi faire autant de charabia et de complication alors que c'est juste tout un tas de variable?
c'est quoi la différence entre "int nombreDeVoiture" et "String couleur" ?
Je pense que je commence à comprendre la subtile """""""""""""""""différence"""""""""""""" entre classe et instance(=objet) mais j'y vois pas l’intérêt.
La différence c'est que que avec la couleur tu peux faire voiture1.couleur pour récupérer la couleur de la voiture1 alors qu'avec nombreDeVoiture tu ne l'appelles pas sur un objet spécifique mais sur la classe.
Ce sont des concepts qui ce comprenne mieux en programmant, donc je te conseillerais de faire des projets tu comprendrais leurs utilité ainsi.
Merci pour vos messages matinaux
, je pense que je saisie bien mieux le concept d'instance, je vais faire quelque exercise pour mieux comprendre !
Lis un livre sur la POO qui ne se place dans aucun langage particulier et t'auras probablement les réponses à toutes tes questions
La POO c'est un concept théorique bien plus que pratique, y a pas grand chose d'intéressant à dire sur l'implémentation de la POO dans les différents langages pour un débutant
Sinon un résumé très concis :
Un objet c'est la donnée d'un état interne et de méthodes qui permettent d'interagir avec l'état interne depuis l'extérieur.
Avant de comprendre ce qu'est un objet il est essentiel de comprendre la notion de structure pour comprendre la différence entre les deux.
Une structure c'est un cas particulier d'objet, intuitivement une structure c'est un objet sans aucune encapsulation : tout le monde peut accéder et modifier son état interne depuis l'extérieur.
Par exemple on peut imaginer une structure Complex(Real, Real) qui contiendrait la donnée de deux réels correspondant à la partie réelle et à la partie imaginaire du complexe représenté. Dans ce cas chacun ayant une instance de cette structure aurait accès à la fois à la partie réelle et à la partie imaginaire.
A contrario on peut imaginer un objet logger dont l'état interne consiste en un descripteur de fichier (quelque chose qui permet d'écrire dans un fichier), cet état serait inaccessible et pour utiliser l'objet logger il y aurait une méthode logger.log(message) qui elle s'occupera d'écrire le message dans le fichier.
Ici on fait le choix de cacher l'état interne puisqu'on ne veut pas que les gens qui utilisent le logger écrivent du code qui dépend de l'état interne. On peut très bien imaginer que la personne ayant implémenté le logger ait choisi une implémentation inadaptée et décide finalement de sauvegarder les messages dans une base de données par exemple.
Le problème c'est que si quelqu'un qui utilisait le logger s'amusait à interagir avec le descripteur de fichier eh bien son code sera cassé après le changement d'implémentation.
Autrement dit un objet ça permet de limiter l'utilisateur dans ses possibilités d'interaction avec l'état interne. Si je considère que le fait que le logger écrive dans un fichier est un détail d'implémentation, alors j'encapsulerai mon descripteur de fichier et je ne laisserai pas l'utilisateur y accéder. A contrario je considère que la méthode logger est convenable à utiliser par l'utilisateur.
Maintenant une classe c'est juste un patron de conception d'objets. Ça décrit comment construire un objet de ce type là, quelles méthodes il possède et quel est son état interne.
la Classe représente le concept de quelque chose, une instance de classe est un objet.
Le 14 novembre 2021 à 13:17:35 :
la Classe représente le concept de quelque chose, une instance de classe est un objet.
Une classe c'est un type quoi, et une instance c'est un élément du type, ça va pas l'avancer plus que ça ![]()
Les types primitifs sont aussi des types, les types algébriques aussi, les structures aussi, les unions de types aussi, les interfaces aussi, les classes abstraites aussi ![]()
Quand tu déclares une classe, tu informe le compilo (celui qui va transformer l'ensemble de code ou bout de code en instruction processeur, pour faire simple) de la nature d'un objet que tu va potentiellement créer. Par exemple cette objet devra posséder 2 champs int, 1 champ pointeurs de int, etc. A cet objet sera aussi attaché des fonctions.
- Si tu n'instancies jamais cette classe, alors le compilo n'en fera rien, et ta déclaration de classe n'aura servi à rien.
- Si tu créé une instance de cette classe, alors le compilo va réserver un espace mémoire pour elle (dans notre exemple 2 champs int, 1 champ pointeurs de int, etc). Cette instance pourra aussi utiliser les fonctions que tu as défini pour elle.
- Si tu créé 2 instances de cette classe, alors automatiquement le compilo va réserver deux fois plus d'espace mémoire, un pour chacune des deux instances.
Quand tu déclares maClass instance1; c'est effectivement comme si tu faisais int var1;
Sauf que tu créé en mémoire un objet un peu plus compliqué qu'un simple entier. L'intérêt étant évidement de pouvoir utiliser autant que possible ces objets que tu as défini (les créer ou les supprimer xxx fois, en fonction du déroulement de ton programme)
Évidemment le passage au compilo rend tout ça très abstrait, une fois en langage machine tu te retrouves simplement avec un tas d'instructions qui se réfèrent à pleins d'adresses décalées n fois, un beau bordel...
PS: j'avoue parler de POO en général, je ne connais pas trop JAVA. Mais c'est plus ou moins la même chose