Bonjour !
Avant tout, je précise que j’ai un parcours "autodidacte" et que je pense avoir appris la programmation en faisant des projets perso et en suivant des cours sur divers sites (Zeste de savoir, OC, des sites moins connus, des books de langage, la doc) et un mastère
Je pensais connaître la POO plutôt bien et je dois dire que récemment, j’ai eu un petit choc. Je pense qu’en faites, je n’ai jamais réellement fait de la POO.
J’ai ainsi plusieurs questions :
Qu’est-ce qu’une classe devrait réellement représenter?
Exemple :
const users = [
{ name: "Jean" },
{ name: "Paul" },
{ name: "Phillipe" },
{ name: "Antoine" }
]
function sortUser(users, condition) {
// code
return users
}
const usersSort = sortUser(users, ...)
Ici, j’aurai eu tendance à faire :
class UserList {
private _name: string[];
constructor(name: string[]) {
this._name = name;
}
sort(users, condition) {
return users;
}
}
Mais je n’aurai pas plutôt dû faire une classe User
/ UserSorted
? Si oui sous quelle forme ? J’ai du mal à le visualiser.
Qu’est ce réellement que l’encapsulation ?
J’ai toujours cru que l’encapsulation voulait simplement dire : "Ok, j’ai une propriété privée mais je veux pouvoir y accéder et la modifier proprement" ce qui signifie getter/setter
Sauf qu’apparemment, il ne faudrait plus pouvoir modifier l’état d’un objet, une fois créer non ? Donc qu’est-ce qu’est l’encapsulation réellement ?
Javascript est-il réellement un bon exemple ?
J’ai l’impression que cette logique de bosser sous forme de classe est plutôt bonne en Java, C# et que le langage incite à travailler de la sorte mais si on prend l’exemple de Javascript, est-ce vraiment une bonne chose ?
Rust & Go
Comment vous feriez pour appliquer cette même logique OOP dans un langage comme Rust et Go qui ne comporte pas de classe ? (mais plutôt des strictes / implémentations des strictes ?
Si la réponse est : "Rust & Go ne sont pas des langages de programmation orienté objet" alors ma réponse sera : "Comment réfléchir pour concevoir ses programmes en Rust ou Go ?" (même si la réponse est forcément dépendante du langage et ne sera sûrement pas la même en fonction de Rust ou Go justement.
Je suis un peu sur le cul haha, (ce livre en est la cause