Découper une classe en plusieurs sources

SmySmy Membre
Bonjour

Petite question d'Objective C, qu'elle est la meilleure solution pour découper une classe en plusieurs sources ? Je parle ici d'une classe que l'on développe totalement, pas d'une classe existante à  laquelle on veut ajouter des méthodes.

Est-ce simplement les categories ? Si oui, je ne trouve pas cela très simple...

Réponses

  • tabliertablier Membre
    21:03 modifié #2
    Je vois deux solutions:
    1  Les catégories
    2  les fichiers .m ou .c que l'on importe dans le texte entre le @implementation  et le @end

    la deuxième solution permet de répartir le code volumineux d'une implantation sur plusieurs fichiers. Dans ce cas il faut interdire à  Xcode de compiler ces fichiers.

    Il y a surement d'autres solutions.
  • CéroceCéroce Membre, Modérateur
    septembre 2011 modifié #3
    Intéresse-toi à  la design pattern Façade.

    Le principe est simple: un objet (façade) fournit l'interface aux objets extérieurs, mais en interne, cette classe fait appel à  d'autres classes pour réaliser la fonction.
    C'est une bonne manière de faire car elle masque la complexité aux classes clientes et surtout retire des dépendances; en effet, l'organisation des classes derrière la façade peut changer mais l'interface rester identique.

    P.S.: Il n'est pas forcément facile de concevoir le découpage des classes: certaines se retrouvent trop complexes (trop de méthodes) ou trop simples (pas assez). Il est souvent plus efficace de coder comme on le sent et remanier l'organisation des classes par la suite si nécessaire (cà d plus lisible).
  • AliGatorAliGator Membre, Modérateur
    21:03 modifié #4
    J'étais parti pour te conseiller les catégories car en effet elles sont aussi faites pour ça (par exemple Apple lui-même découpe des classes de Cocoa en catégories, même alors qu'ils ont la maà®trise de tout le code donc ce n'est pas juste pour ajouter du code à  des classes existantes), même si ce n'est pas le plus sexy.

    Mais en effet je m'étais concentré sur juste à  répondre à  la question "découper une classe sur plusieurs fichiers" mais Céroce a vu plus juste et est de très bon conseil car remanier ton architecture pour la rendre plus flexible et maléable est sans nul doute la solution, et le DP Façade qu'il propose est tout à  fait adapté.
  • SmySmy Membre
    21:03 modifié #5
    Merci à  tous les trois.

    Je vais à  la fois me pencher sur façade pour ma culture et les catégories pour mon besoin immédiat.

    Et tablier, le coup du .m importé est rigolo, je n'y avais pas pensé :)
  • tabliertablier Membre
    21:03 modifié #6
    Et tablier, le coup du .m importé est rigolo, je n'y avais pas pensé
    ça marche, mais il ne faut pas en abuser! En fait j'utilise bien plus souvent les catégories ainsi que ce que t'indique Céroce avec qui je suis d'accord sur ce qui suit
    Il n'est pas forcément facile de concevoir le découpage des classes: certaines se retrouvent trop complexes (trop de méthodes) ou trop simples (pas assez). Il est souvent plus efficace de coder comme on le sent et remanier l'organisation des classes par la suite si nécessaire (cà d plus lisible)
Connectez-vous ou Inscrivez-vous pour répondre.