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 :

Autoroute c# / design patterns


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut Autoroute c# / design patterns
    Bonjour à tous,

    Je suis étudiant en iut informatique et dans le cadre d'un projet de fin d'année, je dois réaliser une application c# console basé sur les autoroutes.
    Nous avons obligation d'utiliser différents design patterns tel que fabrique abstraite, fabrique, statégie etc ...

    Et honnêtement je ne sais pas par quoi commencer, je suis entrain de travailler sur les fabriques et il y une notion de zone, d'accès et d'environnement car les véhicules peuvent circuler sur certaines voies, d'autres voies sont interdites car les véhicules sont trop haut ou pollues trop. Je ne vois pas avec quels objets/variables je peux représenter ces accès dans le code et en mode console sutout ...

    Avez vous une idée de comment je pourrais modéliser ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    Hello,
    Un sage m'a dit une fois : Classes are your friends.
    En fait, vous pouvez travailler avec les classes pour réaliser ces tâches, je vais te donner des exemples réels :
    D'abord, nous créerons deux classes pour définir nos objets de la vie réelle (Véhicule + autoroute) :

    Nom : class1.png
Affichages : 376
Taille : 12,0 KoCode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ublic class Vehicule
            {
                public string Nom { get; set; }
                public string Model { get; set; }
                public float Masse { get; set; } // Weigth
                public float Hauteur { get; set; } // Height
            }
     
            public class Autouroute
            {
                public string Nom { get; set; }
                public float Hauteur { get; set; }
            }
    Ensuite, nous allons configurer notre méthode de fabrique :
    Nom : Permission.png
Affichages : 340
Taille : 3,4 Ko
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public abstract class Permission
            {
                public abstract bool Passable { get; }
            }
    +
    Nom : Screenshot_2.png
Affichages : 349
Taille : 7,0 Ko
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private class NPassable : Permission
            {
                public override bool Passable => false;
            }
     
            private class OPassable : Permission
            {
                public override bool Passable => true;
            }
    En plus , nous ferons notre classe "Fabrique" :
    Nom : fab.png
Affichages : 337
Taille : 7,7 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static class Fabrique
            {
                public static Permission GetPermission(float HV, float HA)
                {
                    if (HV > HA)
                        return new NPassable();
                    return new OPassable();
                }
            }
    C'est tout !
    Dans le programme principal, vous pouvez écrire ce code générique :
    Nom : Result.png
Affichages : 400
Taille : 22,4 Ko
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    private static void Main(string[] args)
            {
                Console.Title = "Alaa Ben Fatma";
                var V = new Generic.Vehicule
                {
                    Hauteur = 12,
                    Masse = 3500,
                    Model = "Tesla",
                    Nom = "TestName"
                };
                var A = new Generic.Autouroute
                {
                    Hauteur = 10,
                    Nom = "2B"
                };
                var Passable = Generic.Fabrique.GetPermission(V.Hauteur, A.Hauteur);
                Console.WriteLine(Passable.Passable.ToString());
                Console.ReadKey();
            }
    Happy weekend

  3. #3
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    on apprend les design patterns à l'IUT maintenant ? Bonne nouvelle, je trouve que c'est toujours une base intéressante.

    Pour revenir au sujet, il faut que tu nous en dises plus que "basé sur les autoroutes".
    D'ailleurs c'est en lisant, retournant, questionnant l'énoncé que tu comprendras l'objectif et sauras quel modèle mettre en place.
    Enfin, tu écris "en mode console sutout", mais l'interface n'a que peu d'importance ici (le mode console sera même plus simple).

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut
    Merci Alaa Ben Fatma pour cette démonstration les choses me paraissent plus clair !

    jopopmk effectivement en lisant l'énoncé ce n'était pas claires dans ma tête et je pense que je me suis embrouillé l'esprit ...
    Je suis loin d'être un expert en C# et les design patterns m'ont fait un peu peur car je ne voyais pas comment les appliquer sur ma solution.

    Il s'agit d'une application console et par la suite WPF qui fonctionne comme un simulateur de parcours d'automobilistes sur autoroute et j'ai pensé à pas mal de chose comme la gestion des accidents, les arrêts d'automobilistes sur des aires d'autoroutes, les files les plus rapides en cas d'accidents/bouchons, la gestion de la vitesse, la météo, l'usure des véhicules/carburant ...

    A chaque tour, je dois pouvoir choisir l'insertion d'un nombre de véhicules ou leurs retrait, le changement de la météo et l'affichage de l'ensemble.

    En réalité je suis assez libre sur le choix d'implémentation, le but étant d'utiliser au minimum 5 design patterns. Je pense employer du Linq aussi, ça pourrait être sympa

    Qu'en pensez-vous ? 5 design patterns c'est largement faisable sur ce sujet ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut
    Merci ericlm128 j'ai effectivement du singleton mais sous ce format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private static readonly Lazy<Autoroute> instance =
                new Lazy<Autoroute>(() => new Autoroute());
     
            public static AutorouteInstance { get; } = instance.Value;
    J'ai mis aussi en place du stategie et observateur Je me demande si je peux utiliser le design pattern commande afin de propager des stratégies ? ...

    J'ai commencer le projet wpf, est-ce que MVVM constitue un design pattern Observateur et Command ?

    Merci à tous pour vos réponses ça fait plaisir

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [VS.NET] Les design pattern et DOTNET
    Par Nycos62 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/10/2004, 14h44
  3. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  4. Les Designs Patterns Entreprise
    Par boulon dans le forum Design Patterns
    Réponses: 4
    Dernier message: 01/09/2004, 19h16
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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