CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[java] Je ne comprend rien à la POO

RIPsaveme
RIPsaveme
Niveau 7
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..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?

Oshlatant
Oshlatant
Niveau 10
12 novembre 2021 à 00:23:11

La class c'est le plan de construction, l'instance c'est la construction

godrik
godrik
Niveau 30
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?

DengJu
DengJu
Niveau 6
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).

cybevil
cybevil
Niveau 27
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..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?

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.

Message édité le 12 novembre 2021 à 07:33:42 par cybevil
RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:26:16

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?

RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:26:32

enfin, variable/constante

RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:29:40

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?

RIPsaveme
RIPsaveme
Niveau 7
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..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?

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.

cybevil
cybevil
Niveau 27
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

infireman
infireman
Niveau 9
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

RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:41:35

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 :rire:

cybevil
cybevil
Niveau 27
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..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?

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.

Message édité le 12 novembre 2021 à 10:43:41 par cybevil
RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:43:15

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 :ouch2:
moi qui cherchais désespérément comment crée un fichier "instance1" sur eclipse

RIPsaveme
RIPsaveme
Niveau 7
12 novembre 2021 à 10:45:33

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..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?

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 :ok: , je pense que je saisie bien mieux le concept d'instance, je vais faire quelque exercise pour mieux comprendre !

Pseudo supprimé
Pseudo supprimé 12 novembre 2021 à 22:07:28

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

Pseudo supprimé
Pseudo supprimé 12 novembre 2021 à 22:33:35

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.

Message édité le 12 novembre 2021 à 22:35:24 par Pseudo supprimé
bane54
bane54
Niveau 47
14 novembre 2021 à 13:17:35

la Classe représente le concept de quelque chose, une instance de classe est un objet.

Message édité le 14 novembre 2021 à 13:17:46 par bane54
Pseudo supprimé
Pseudo supprimé 14 novembre 2021 à 14:33:28

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 :)

Message édité le 14 novembre 2021 à 14:34:47 par Pseudo supprimé
aAardvark
aAardvark
Niveau 75
15 novembre 2021 à 02:46:20

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

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment