Partage

Apprendre le Java

sans POO

Le 2 mars 2009 à 19:50:42

Bonjour
Je voulais savoir s'il était possible d'apprendre le Java sans traiter la programmation orienté objet
Je n'ai jamais vu ce type de programmation, je ne sais pas ce que c'est mais ça me semble quand même important ...

Je demande ça parce que je voulais m'acheter un livre et j'en ai vu un qui ne traitait pas de la POO

Je vous montre juste de quel livre il s'agit : ici

Merci :) !
Publicité
Le 2 mars 2009 à 19:50:42
Le 2 mars 2009 à 20:01:16

Salut !

En fait je vois pas trop l'intérêt d'apprendre le Java sans la POO O_o'

Sans ce concept, il ne reste plus rien ! En effet, le Java est entièrement OO. Tu ne peux même pas faire un fichier sans créer de classe.

Donc c'est soit avec l'OO, soit pas de Java :D
Le 2 mars 2009 à 20:05:31

Faire du Java sans la POO, c'est, à mon humble avis, passer à coté de 95% du langage. Qu'un livre explique la programmation via Java sans parler de la POO, ça ne semble pas très sérieux. Déjà, dans tous les programmes, tu auras forcément des "classes" (notion centrale en POO). Donc si on ne te parle pas de POO en Java, tu ne pourras pas vraiment comprendre comment fonctionne le langage.

Faire du Java sans POO ne me parait pas être une bonne chose.

Apprends Java avec la POO. Comme tout, la POO peut s'apprendre. Les concepts en eux-mêmes ne sont pas tellement complexes.
anonyme
avatar
Le 2 mars 2009 à 20:17:40

bon les autres ont déja tout dit (pratiquement? :-° )

mais ton livre date de 2005 et traite de java2 o_O je sais pas si c'est le prix qui t'a attire ou meme si on te l'a conseillé :-° mais je te conseille un livre datant au moins de 2008 et ne contenant pas dans son titre le mot "debutant" (comme cela il traitera du sujet de en profondeur et te servira plus longtemps)

voila ;)
Le 2 mars 2009 à 20:17:59

Je ne te conseille pas ce livre, Java 2 c'est assez dépassé maintenant. Il y a eu pas mal de changements depuis Java 2 (Java 1.6 actuellement), je pense notamment à la programmation générique. Je te conseillerais plutôt ce livre :

http://www.eyrolles.com/Informatique/L [...] 9782212122329

On le trouve à 19€ en version Best Of.
Le 2 mars 2009 à 20:54:37

Merci beaucoup pour vos réponses.
C'est vrai ça me paraissait louche, le java sans POO

J'avais déjà vu le livre de Delannoy, il me semble pas mal en effet ... Des avis ?
Le 2 mars 2009 à 21:05:55

En sachant que java2 c'est le nom donné à java > 1.3, actuellement on est encore à java2, histoire qu'on confonde pas tout d'emblée. Ensuite, tu peux tout à fait programmer sans utiliser la POO. Alors effectivement, ce serait dommage, mais java offre des librairies, certes objet, mais qu'on peut utiliser sans aucun concept OO. Un peu comme en javascript si on veut, langage procédural, avec librairies objet, bien qu'il y ait des possibilités pour faire de l'objet en JS.

Au final, tu verras que la POO, qui est un concept, permet de résoudre des problèmes informatiques de façon assez simple, l'idée étant de faire abstraction des contraintes techniques, et d'imaginer les entités qui vont faire tourner ton programme. Tu peux de là imaginer pour coder une calculette devoir mettre en place le comportement et la responsabilité d'objets comme Memoire, Processeur, Ecran, Touche, Calculette, par exemple.
Le 2 mars 2009 à 21:46:10

Je vois merci beaucoup, donc je pense quand même que c'est un peu bête de ne pas apprendre la POO ...

Et j'avais une autre question : pour le langage C, il faut apprendre par exemple la SDL pour faire des programmes en 2D, sans console je veux dire.

Est-ce que en Java c'est pareil ?
Et est-ce que ceci est expliqué dans le livre de claude delannoy ? (comment par exemple créer une calculatrice comme dans le tuto sur le Java - que je n'ai pas encore lu-)

Merci d'avance !
Le 2 mars 2009 à 21:59:53

non java contient déjà des fonction de bases pour faire de la 2D

fait un tour sur le tutoriel (sans le lire juste regardes les chapitre)
Le 2 mars 2009 à 23:14:58

Juste pour dire que, lors d'un stage, les formateurs en Java que j'avais rencontrés (qui à mon avis étaient franchement compétents) ne portaient pas spécialement (voire pas du tout) les livre de Delannoy dans leur cœur (pour ceux concernant Java). Globalement, d'ailleurs, peu de livres trouvaient grâce à leurs yeux (livres plus ou moins d'apprentissage de Java s'entend). Le seul qui sortait du lot était "Java tête la première".

Le problème, c'est qu'il était édité chez "O Reilly France" qui n'existe plus aujourd'hui hélas... Donc, pour se le procurer, il faut l'acheter d'occasion. Attention, si tu débutes complètement en programmation, je pense que le niveau de ce livre est un peu dur. D'après ta signature, tu sembles connaitre le C, donc a priori ça devrait le faire. Ah j'oubliais, "Java tête la première" en version française contient pas mal de coquilles (même dans les codes, même si c'est pas tout le temps non plus). Bon, franchement, si on suit bien, on les détecte sans problème mais c'est quand même un peu dommage.
Le 3 mars 2009 à 0:26:33

un livre utilisé a l'université est "Java concepts de cay horstmann" je le trouve bien fais pour les debutants ... y a un peu de tout dans les bases... mais bon avant de connaitre tout java hein ! va falloir en manger de l'api :d.

Sinon si tu veux pas faire de l'orienté objet y a d'autre langage style recursif et moins connu : scheme (langage recursif), ocaml (langage de programmation OO et recursif basé sur les math en particulier) pour ne cité qu'eux ... tout depend de ce que tu veux en faire :)
Le 3 mars 2009 à 17:50:16

Non ce n'est pas que je ne veux pas faire de la POO, je demandais juste :)

ça ne me dérange pas d'essayer d'apprendre

merci pour toutes vos réponses !
Le 3 mars 2009 à 18:39:32

Perso il m'a fallu près de 6 mois pour bien comprendre tous les aspects et les enjeux de la POO. Enfin ce n'est pas le temps qui compte, mais la pratique. Dans un contexte scolaire où on te fait faire du Java sans te définir ne serait-ce qu'une fois la POO, c'est sûr on pige pas tout de suite !

La POO est une approche tellement humaine et proche du réel qu'une fois que tu seras dedans tu ne penseras plus autrement :)
Java est très bien pour commencer avec ce concept. Je pense que le C++ peut venir ensuite si tu veux améliorer tes connaissances, parce qu'il apporte le concept de la mémoire, dont Java se charge quasiment tout seul.
Le 3 mars 2009 à 20:28:04

Je dirais même plus, il est impossible de programmer quoique ce soit en Java sans objets :)
Le 4 mars 2009 à 12:18:24

Citation : Mooneer7

Je dirais même plus, il est impossible de programmer quoique ce soit en Java sans objets :)


la chuis pas d'accord :)
tu sais faire du procédurale :)
même si c'est pas du tout optimisé pour :p
par exemple tu sais faire un jeux sous console qui essaye de te faire retrouver un nombre
anonyme
avatar
Le 4 mars 2009 à 13:19:53

Citation : Snooooopy

Citation : Mooneer7

Je dirais même plus, il est impossible de programmer quoique ce soit en Java sans objets :)


la chuis pas d'accord :)
tu sais faire du procédurale :)
même si c'est pas du tout optimisé pour :p
par exemple tu sais faire un jeux sous console qui essaye de te faire retrouver un nombre



Et comment tu fais pour récupérer l'input sans instancier un Scanner ou un Reader?

L'api java est architecturée autour du paradigme objet et le langage créé dans ce sens, tu peux pas faire sans.
Le 4 mars 2009 à 14:49:07

pas faux XD
heuu ben j'ai mieu comme code XD
un code qui affiche un message dans la console :ange:
Le 4 mars 2009 à 15:12:31

Citation : shakhal

Citation : Snooooopy

Citation : Mooneer7

Je dirais même plus, il est impossible de programmer quoique ce soit en Java sans objets :)


la chuis pas d'accord :)
tu sais faire du procédurale :)
même si c'est pas du tout optimisé pour :p
par exemple tu sais faire un jeux sous console qui essaye de te faire retrouver un nombre



Et comment tu fais pour récupérer l'input sans instancier un Scanner ou un Reader?

L'api java est architecturée autour du paradigme objet et le langage créé dans ce sens, tu peux pas faire sans.



En même temps là je suis désolé mais tu confonds tout, faut pas tout mélanger non plus. Lorsque tu crées un Scanner, à aucun moment tu ne fais de POO, tu t'en sers juste. Javascript ( je trouve l'exemple très bon ), est conçu objet à pas mal de niveaux, rien que la classe Element par exemple, et la manipulation du DOM se sont que des objets qui interviennent, par contre quand on fait un script pour une page web, à aucun moment on ne fait de POO, on fait un simple script procédural avec éventuellement quelques routines, mais rien de plus, au final c'est un enchaînement d'instructions.

Avec java, on peut très bien utiliser des objets, mais sans faire une goute de POO.
anonyme
avatar
Le 4 mars 2009 à 15:25:53

Java a été conçu autour d'une architecture objet(pas parfaitement du fait des types primitifs mais passons, y a quand même les wrappers).

A partir du moment ou tu t'en sert, tu entres dans le paradigme, on peut faire en faire abstraction simplement parce qu'on utilise pas les concepts de bases de l'objet(héritage, polymorphisme, encapsulation).

Parce que sinon, si on veut jouer à ça, je connais pas beaucoup de gens qui font de l'objet(encapsulation limitée a getter/setter, héritage pour réduire le code sans liens sémantiques,...)

A partir du moment ou tu tapes la moindre ligne dans ton main, tu fais de l'objet, main est static et c'est donc une méthode de classe, concept absent du paradigme procédural.

Le 4 mars 2009 à 17:39:09

Coder dans un main, je vois pas où est l'objet là dedans ! Oo

On peut coder en procédural de sorte qu'on n'écrive que des méthodes statiques qui sont tout simplement découpées dans des classes différentes, comme on le ferait pour des routines en C qui sont dans des sources différents. Avec les import static il y a même pas besoin de préfixer le nom de la classe pour appeller une méthode statique.

Tout ça, tu le sais, n'empêche que ce n'est pas de la POO. La POO c'est le fait de concevoir en objet, de raisonner en objet, pas de faire un new Scanner(), ou un String.length(). Et je pense qu'il faut bien distinguer les deux choses, d'ailleurs le C++, où l'objective-C le montrent de façon encore plus marquée en permettant de produire des routines type C qui appellent sans problème des librairies de fonctions de leurs langages respectifs.

Il y a une différence entre construire une moto, et la rouler. On en est presque au même niveau là.
anonyme
avatar
Le 4 mars 2009 à 18:20:29

Citation : askerat

Coder dans un main, je vois pas où est l'objet là dedans ! Oo



Tout simplement que tu es dans une méthode de Classe (déjà entendu parler de classe dans le paradigme procédural toi?)

Citation : askerat


On peut coder en procédural de sorte qu'on n'écrive que des méthodes statiques qui sont tout simplement découpées dans des classes différentes, comme on le ferait pour des routines en C qui sont dans des sources différents. Avec les import static il y a même pas besoin de préfixer le nom de la classe pour appeller une méthode statique.



Tout à fait et le concept de static est propre à l'objet, il n'a pas de sens dans le procédural vu qu'il n'y a pas de classes.

Citation : askerat


Tout ça, tu le sais, n'empêche que ce n'est pas de la POO. La POO c'est le fait de concevoir en objet, de raisonner en objet, pas de faire un new Scanner(), ou un String.length(). Et je pense qu'il faut bien distinguer les deux choses, d'ailleurs le C++, où l'objective-C le montrent de façon encore plus marquée en permettant de produire des routines type C qui appellent sans problème des librairies de fonctions de leurs langages respectifs.



new Scanner() = initialisation des membres static si il y a(et si la classe n'a pas déjà été chargée), initialisation des attributs non static, appel du constructeur (et du constructeur parent dans le cas d'un constructeur par défaut) je vois pas mal de concepts objets la dedans moi, maintenant si le programmeur sait pas ce qu'il fait, y a toujours la couture ou les puzzles...


Citation : askerat


Il y a une différence entre construire une moto, et la rouler. On en est presque au même niveau là.


Tout à fait et tu roules sans savoir ce qu'il y a dans la moto toi?

Je vois ou tu veux en venir, dans un monde idéal, un langage fournirait un niveau d'abstraction suffisamment élevé pour s'abstraire de son paradigme(y en a peut-être d'ailleurs, mais ce n'est pas le cas du java).

Maintenant rien ne t'empêche de faire semblant de faire du procédural, comme tu ferais semblant de faire de l'objet en C avec des struct et pointeurs de fonctions, mais dans le fond, tu seras toujours, à plus bas niveau, dans le paradigme du langage.
Le 4 mars 2009 à 19:20:47

Je crois que vous vous chaimaillez pour rien. La notion de code "orienté objet" n'est pas binaire (d'où le mot "orienté").

Faire un code Java en mettant tout dans le main et en utilisant éventuellement des méthodes statiques (comme des fonctions) définies dans d'autres classes, on peut très bien dire que c'est orienté objet parce qu'il y a des classes etc, mais d'un autre côté on peut dire aussi c'est du code très peu orienté objet voire pas du tout (et donc finalement que c'est du procédural) car on ne retrouve pas dans le code ne serait-ce que le principe d'encapsulation qui est quand même un des principes de base de l'orienté objet.

Après, c'est une question de point de vue. Pour ma part, j'aurais quand même tendance à dire que ce genre de code revient à faire du procédural. Il me semble que le fait d'utiliser des objets n'est pas suffisant pour qualifier un code d'orienté objet. Mais je le répète c'est une question de point de vue. On peut très bien dire qu'un code est orienté objet dès qu'on utilise des objets (même si pour ma part ça me semble être une définition trop large).

Là où on est tous d'accord par contre, c'est que faire du code comme décrit ci-dessus ça n'a de toute façon pas un enorme intérêt en Java et ça serait même vraiment passer à côté du langage.

Apprendre le Java

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown