IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

C est-il orienté objet?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut C est-il orienté objet?
    Le mot-clé struct est-il l'ancêtre du mot-clé class de la plupart des langages modernes? Du moins, les structures crées par struct sont des classes comme les autres, juste avec des arguments mais quand même une classe. D'autres similtudes existe entre les structures et les classes :
    -Les deux sont des types personnalisés.
    -Les deux contiennent des attributs
    -Les attributs des deux sont accessibles via la notation objet.attribut

    Et vous, qu'en pensez vous?
    Pensez-vous que struct est-il l'ancêtre de l'orienté objet? Pourquoi?
    Pensez-vous que C est orienté objet? Pourquoi?
    Pensez-vous que C++ et Objective-C aurait dû n'être que des nouvelles normes pour le C? Pourquoi?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    Salut,

    C n'est pas orienté objet.
    Pour moi, un langage objet permet de standardiser et de simplifier la création d'objet.
    C'est très important de "standardiser" car au moins tout le monde travail de la même manière.
    L'utilisation des pointeurs en langage C est problématique car tu as directement accès à la mémoire => avec un langage objet, il y a une couche abstraction qui permet de déclarer automatiquement l'espace mémoire des objets et empêche de modifier certaines zone mémoire protégées.

    Pour moi le seul avantage du langage C est de pouvoir déclarer des variables globales : ça permet de gagner de l'espace mémoire par rapport à l'utilisation d'allocation dynamique d'espace mémoire (utilisée par les langages objet) mais ça complexifie les programmes et augmente le risque de faire du code buggé.
    => langage C utile pour des systèmes embarqués ou pour travailler proche du hardware (ex : création de drivers).

    La démarche de conception d'un programme C n'est pas la même que sur le C++.

  3. #3
    Inactif  
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    avec un langage objet, il y a une couche abstraction qui permet de déclarer automatiquement l'espace mémoire des objets et empêche de modifier certaines zone mémoire protégées
    Documente-toi un peu : cela n'a rien avoir avec l'orienté objet

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sosolal Voir le message
    Documente-toi un peu : cela n'a rien avoir avec l'orienté objet
    Membres privés, membres publics ?

  5. #5
    Inactif  
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Par défaut
    J'ai bien dit ancêtre.
    PS : Et non, la portée n'a rien à voir avec l'orienté objet : Python est un des langages qui éxagèrent le plus sur l'orienté objet, et pourtant il n'a pas de portée.

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Ouaw un topic mort né
    Il n'y a pas de débat la dessus le langage C n'est pas un langage objet.
    C'est comme si je disais "Est que une lampe peut s'allumer ?" evidamment que oui et en peut se poser intérêt d'une telle question.

    Pensez-vous que C++ et Objective-C aurait dû n'être que des nouvelles normes pour le C
    Comment dire C++ est un autre langage que le C , c'est pas quelque petite amélioration.
    Après pour Objective-C c'est un autre langage qui n'a rien a voir avec le C.
    Parler de possibilité de normes pour des langages différent du C me semple inapproprié.

    Pour moi le seul avantage du langage C est de pouvoir déclarer des variables globales : ça permet de gagner de l'espace mémoire par rapport à l'utilisation d'allocation dynamique d'espace mémoire (utilisée par les langages objet) mais ça complexifie les programmes et augmente le risque de faire du code buggé.
    => langage C utile pour des systèmes embarqués ou pour travailler proche du hardware (ex : création de drivers).
    Le seul avantage du C c'est les variables globals ? (qui sont déconseillé je le rappel) c'est une blague...
    Les variables globals sont disponible sur plusieurs langages , non ça ne rend pas le code buggé , ça peut augmenté la complexité enfin c'est surtout que ça empêche un code modulaire et réutilisable.
    Après le C permet de tout faire autre que des drivers ou de embarqué.

  7. #7
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par sosolal Voir le message
    -La convention de nommage est la même (on commence par une majuscule).
    Attention, en C il est déconseillé de nommer quelque chose avec une majuscule : tout ce qui commence par un underscore et une majuscule est un identifant reservé (7.1.3 de la norme C99), et tout ce qui commence par E suivi d'une autre majuscule (ou d'un chiffre) est potentiellement utilisé pour les erreurs (errno.h), de meme pour FE_ suivi d'une majuscule (virgule flottante), LC_ majuscule (locale.h), FP_ majuscule (math.h), SIG majuscule et SIG_ majuscule (signal.h).

    Apres, si on considere qu'un objet peut contenir des attributs et des fonctions, alors non le C n'est pas oriente objet, meme s'il est tout a fait possible d'ecrire de telles choses en C.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  8. #8
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Citation Envoyé par sosolal Voir le message
    -Les deux sont des types personnalisés.
    -Les deux contiennent des attributs
    -Les attributs des deux sont accessibles via la notation objet.attribut
    - Il y en a un des deux qui implémente la notion de constructeurs et destructeurs.
    - Il y en a un des deux qui implémente la notions de méthodes liées à un objet. C'est techniquement faisable en C, mais pas franchement intuitif ni prévu pour, et si t'insistes ça peut être la source de bugs immondes.
    - Il y en a un des deux qui implémente les notions d'héritage.
    Et on pourrait continuer longtemps comme ça.

    Donc non, C n'est pas orienté objet.

Discussions similaires

  1. Réponses: 83
    Dernier message: 17/10/2011, 14h02
  2. La programmation orientée-objet est-elle dépassée ?
    Par Idelways dans le forum Actualités
    Réponses: 0
    Dernier message: 25/03/2011, 13h35
  3. Réponses: 8
    Dernier message: 18/01/2007, 21h01
  4. Réponses: 3
    Dernier message: 09/05/2006, 15h16
  5. VBA est-il un langage orienté objet ?
    Par Kcirtap dans le forum Général VBA
    Réponses: 5
    Dernier message: 06/12/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo