Telecm Bretagne - Département LUSSI Simulateur de crédit immbilier TP d'initiatin au langage C# Philippe Tanguy / Frédéric Cadier IADBA 2008-2009
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] OBJECTIFS PEDAGOGIQUES L bjectif de ce TP est la prgrammatin d un simulateur de crédit immbilier, à l aide de l envirnnement de dévelppement Visual Studi 2008 et du langage de prgrammatin est C#. Les bjectifs pédaggiques snt de ce TP : la prise en main de l envirnnement Visual Studi et du langage C#, la mise en œuvre des cncepts de base (langage, interface graphique), l explitatin d une cnnexin à une base de dnnées à l aide ADO.Net. TABLE DES MATIERES Objectifs pédaggiques... 2 I. Architecture de l applicatin... 3 II. Séance 1 : la cuche «métier»(1/2)... 3 A. Les paramètres du crédit... 4 1. La structure des paramètres... 4 2. Quelques raffinements... 4 B. Premiers tests... 5 1. Un prjet exécutable... 5 2. Premières simulatins... 5 III. Séance 2 : la cuche «métier»(2/2)... 6 A. Le tableau d amrtissement... 6 B. Tests de la cuche «métier»... 6 IV. Séance 3 : la cuche «UI»... 7 A. Interface de saisie... 7 1. Cnstructin de l interface... 7 2. Gestin des évènements utilisateurs... 8 B. Affichage des résultats... 9 1. Cnstructin de l interface... 9 2. Affichage des résultats... 10 V. Séance 4 : La cuche «BDD»... 10 ANNEXES I. Calcul de crédit... 11 A. Principes... 11 B. Tableau d amrtissement... 12 C. Résultats annexes... 13 2 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008-2009 I. ARCHITECTURE DE L APPLICATION L applicatin finale présentera tris cuches distinctes : une cuche «UI» définissant l interface utilisateur, une cuche «métier» qui cntient tute la lgique financière de l applicatin, et une cuche «BDD» qui permet à l applicatin d interagir avec une base de dnnées. Durant les deux premières séances de TP, vus cnstruirez la cuche centrale «métier», ainsi qu une cuche «UI» minimale, de type cnsle, limitée à l affichage des résultats de la simulatin (tableau d amrtissement, cût ttal ). Utilisateur Cuche «UI» Cuche «métier» Cuche «BDD» Dnnées La trisième séance sera cnsacrée au dévelppement d une interface graphique cmplète permettant la saisie des paramètres d une simulatin de crédit et l affichage des résultats. Enfin, durant la quatrième séance, il vus sera demandé de cnstruire la cuche «BDD» chargée du stckage des dnnées (paramètres et résultats) des simulatins effectuées par l utilisateur. Les cuches «métier» et «UI» subirnt alrs quelques évlutins permettant l explitatin de ces dnnées. II. SEANCE 1 : LA COUCHE «METIER» (1/2) La cuche «métier» se présente sus la frme d un fichier dll («Dynamic Link Library») cntenant la classe d bjet permettant de définir et d exécuter une simulatin de crédit. Il sera entendu qu un crédit immbilier est caractérisé par : un taux d intérêt fixe, un mntant d échéances fixes sur la durée du crédit, et un amrtissement du capital nn différé. Pur créer un fichier dll depuis l envirnnement Visual Studi, vus devez : créez un nuveau prjet de type «Visual C# / Windws / Biblithèque de classes» nmmé «CucheMetier», dans une slutin nmmée «SimulateurCredit»(laissez cchée la case «Créer le répertire pur la slutin»), vus btenez, dans l explrateur de slutins, une arbrescence semblable à celle ci-cntre : la slutin ne cntient qu un seul prjet, le prjet cntient un dssier «Prperties» qui dnne accès au fichier «AssemblyInf.cs» cntenant les infrmatins de l assemblage en curs, le prjet cntient également un dssier «References» qui liste les références de biblithèques, le prjet cntient enfin le fichier de classe Class1.cs, l envirnnement uvre autmatiquement le fichier Class1.cs pur éditin. Pur plus de lisibilité, il est bn de renmmer ce fichier en Simulatin.cs. Accepter la demande de renmmage qui suit. Telecm Bretagne - Département LUSSI 3
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] Observns à présent le cde du fichier Simulatin.cs : n truve tut d abrd quelques directives d imprtatin (using), vient ensuite la déclaratin de l espace de nm dans lequel la classe Simulatin sera placée : renmmez l espace de nm en SimulateurCredit.CucheMetier pur faire apparaître l architecture en cuche de ntre applicatin, enfin n truve la déclaratin de ntre classe au sein de l espace de nm. Remarque : à tut instant, une aide cntextuelle est dispnible via F1 A. LES PARAMETRES DU CREDIT Pur la simulatin d un crédit, un certain nmbre de paramètres snt nécessaires (cf. annexe). 1. LA STRUCTURE DES PARAMETRES Créez une struct publique nmmée ParametresDeSimulatin dans vtre classe Simulatin, définissez au sein de cette structure les attributs privés et les prpriétés publiques des principaux paramètres d un crédit : le capital emprunté (duble), la durée du crédit en mis (int), le nmbre d échéances par an (int), le mntant des échéances (duble), le taux d intérêt annuel (duble), et le taux d assurance (duble). définissez et implémentez, en lecture seule, les prpriétés publiques représentant les paramètres calculés d un crédit : le taux d'intérêt péridique (duble), le taux péridique d'assurance (duble), et le mntant des échéances d'assurance (duble). Créez ensuite le cde nécessaire à la classe Simulatin pur qu elle explite cette structure : définissez un attribut PDC typé par la structure précédente au sein de la classe Simulatin, écrivez un cnstructeur pur la classe Simulatin qui prendra un paramètre du type de cette structure et l affecte à l attribut PDC. Remarque : Vérifiez de temps en temps que vtre slutin cmpile crrectement avec F6 2. QUELQUES RAFFINEMENTS Pur que ntre cuche «métier» cntienne réellement des cnnaissances métier, faites en srte que : sur la prpriété représentant la durée du crédit : l accesseur get sit capable, lrsqu elle n a pas encre été définie, de calculer la durée à partir du mntant des échéances, l accesseur set mette à jur le mntant des échéances à l aide de la nuvelle durée. inversement, sur la prpriété représentant le mntant des échéances : 4 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008-2009 l accesseur get sit capable, lrsqu il n a pas encre été défini, de calculer le mntant des échéances à partir de la durée du crédit, l accesseur set mette à jur la durée du crédit à l aide du nuveau mntant d échéance. et que seules les valeurs 1, 2, 4 u 12 sient acceptées en tant que nmbre d échéances par an. Remarque : les méthdes statiques de la classe System.Math snt vs amies B. PREMIERS TESTS Nus allns à présent tester la structure que nus venns de créer. 1. UN PROJET EXECUTABLE Nus devns créer un nuveau prjet, qui prduira un exécutable : ajutez un nuveau prjet à vtre slutin (clic drit sur le nm de la slutin ) de type «Visual C# / Windws / Applicatin Cnsle» nmmé «CucheUI_cnsle», vus btenez une arbrescence semblable à celle ci-cntre : le prjet «CucheMetier» est tujurs présent, le nuveau prjet a été créé et ne cntient qu un seul fichier surce Prgram.cs (en plus, bien sûr, des habituels dssiers «Prperties» et «References»), l envirnnement uvre autmatiquement le fichier Prgram.cs pur éditin. Observns à présent le cde de ce fichier : n truve tut d abrd quelques directives d imprtatin, vient ensuite, la définitin de l espace de nm que vus renmmerez, cette fis, en SimulateurCredit.CucheUI. Ntez que vs deux prjets snt à présent définis dans des espaces de nms distincts, enfin, n truve une classe Prgram qui ne cntient qu une méthde statique Main, qui cnstitue le pint d entrée de l exécutable qui sera généré par ce prjet. Nus suhaitns que ce prjet sit le pint d entrée de la slutin et qu il explite ntre cuche métier : définissez le prjet «CucheUI_cnsle» cmme prjet de démarrage de la slutin par un clic drit sur sn nm, dans l arbrescence, ajutez lui une référence vers le prjet «CucheMetier» pur que le cmpilateur sache ù truver la dll prduite par ce prjet durant la cmpilatin de vtre exécutable, ajutez une directive d imprtatin à l encntre de l espace de nm dans lequel la cuche métier à été définie, pur que le cde que vus écriviez dans la classe Prgram ait cnnaissance de la classe Simulatin. 2. PREMIERES SIMULATIONS Vus puvez à présent créer une instance de la classe Simulatin et vérifier que vtre classe se cmprte crrectement : Telecm Bretagne - Département LUSSI 5
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] au sein de la méthde Main, créez une instance de Simulatin.ParametresDuCredit et fixez-en les paramètres principaux (sit en fixant la durée du crédit, sit en fixant ses échéances), créez une instance de la classe Simulatin en passant en paramètre du cnstructeur vtre instance de Simulatin.ParametresDuCredit, dans la classe Prgram, créez une méthde statique AfficheCnsle qui prend en entrée une instance de Simulatin et affiche sur la cnsle (Cnsle.Writeline()) les infrmatins suhaitées pur la validatin de vtre cde, ajutez au Main un appel à la méthde AfficheCnsle. Cmpilez et exécutez vtre slutin : F5 permet de démarrer une sessin de débgage, Ctrl+F5 démarre sans débgage. Seln la cnfiguratin de génératin sélectin dans Visual Studi (Release u Debug), bservez l arbrescence de fichiers créée dans le dssier du prjet. III. SEANCE 2 : LA COUCHE «METIER» (2/2) Puisque tut fnctinne parfaitement vus allez à présent cmpléter vtre classe Simulatin pur qu elle calcule le tableau d amrtissement du crédit. A. LE TABLEAU D AMORTISSEMENT Pur cela, deux nuvelles structures sernt nécessaires : la première, nmmée LigneAmrtissement, décrit une ligne du tableau d amrtissement et cntient les attributs (privés) et prpriétés (publiques) suivants : le capital restant dû avant l échéance (duble), les intérêts à l échéance (duble), la partie de capital rembursé à l échéance, i.e. l amrtissement (duble), les frais à l échéance (duble), le mntant réel de l échéance (duble). Remarque : prenez sin à renvyer des résultats arrndis à deux chiffres après la virgule. la secnde, nmmée ResultatSimulatin, cntient l ensemble des résultats d une simulatin sus la frme d attributs publiques (u de cuples attribut/prpriété si vus le suhaitez) : le tableau d amrtissement sus la frme d une liste générique de LigneAmrtissement, le cût ttal des intérêts (duble), le cût ttal de l assurance (duble), le cût ttal du prêt. Enfin, ajutez à vtre classe Simulatin : un attribut typé par la structure ResultatSimulatin, une méthde RunSimulatin() qui calcule cet attribut. B. TESTS DE LA COUCHE «METIER» Passns enfin aux tests finaux de ntre cuche métier : 6 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008 IADBA 2008-2009 ajuter un appel à RunSimulatin dans vtre méthde Main, cmpléter vtre méthde AfficheCnsle pur qu elle affiche le tableau d amrtissement et les résultats annexes (cûts ttaux ) du crédit. Cmpilez et exécutez vtre slutin. IV. SEANCE 3 : LA COUCHE «UI» Il est à présent temps de cnstruire une interface graphique pur ntre simulateur. Deux fenêtres vnt être crées : une interface de saisie des paramètres d un crédit, une fenêtre d affichage des résultats de la simulatin. A. INTERFACE DE SAISIE L interface de saisie purra ressembler peu u pru à ceci : 1. CONSTRUCTION DE L INTERFACE Pur parvenir au résultat ci-dessus : ajutez un nuveau prjet de type «Visual C# / Windws / Applicatin Windws Frms» nmmé «CucheUI» à vtre slutin, faites-en en le prjet par défaut de la slutin, vus btenez une arbrescence semblable à celle ci-cntre : n retruve les deux prjets précédents, le nuveau prjet est présent et cntient les deux dssiers «Prperties» et «References», il cntient également le fichier surce Prgram.cs qui sert de pint d entrée à l exécutable généré pur ce type de prjet, Telecm Bretagne - Département LUSSI 7
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] enfin, il cntient le fichier Frm1.cs qui cntient une partie du cde définissant la fenêtre (u frmulaire) que l envirnnement a autmatiquement uvert. Avant tute chse, vus puvez renmmer le fichier Frm1.cs en MainUI.cs pur plus de lisibilité. Accepter la demande de renmmage qui suit. Plusieurs pints snt à nter pur ce type de prjet : il est peu curant d avir à retucher le fichier Prgram.cs qui se charge de cnstruire une nuvelle instance de Class1 et de l afficher. Ouvrez-le et bservez l utilisatin de la classe Applicatin définie dans l espace de nm System.Windws.Frms et qui permet de gérer facilement une applicatin. le fichier Frm1.cs est éditable sit dans le Designer (par défaut), sit dans l éditeur de cde via un clic drit sur le nm du fichier, si vus «dépliez» le fichier Frm1.cs dans l arbrescence de la slutin, vus bservez la présence d un fichier Frm1.Designer.cs qui cntient le cde autmatiquement généré par le Designer pur la classe Frm1 : ce mécanisme est pssible grâce à l utilisatin du mt-clé partial dans la déclaratin de la classe, qui autrise de répartir la définitin d une classe sur plusieurs fichiers. Remarque : il est frtement décnseillé de tucher au fichier Frm1.Designer.cs si vus ne savez pas exactement ce que vus faites! Pur mntrer que nus savns ce que nus faisns vus allez, dans le fichier Frm1.cs et dans le fichier Frm1.Designer.cs, renmmer l espace de nm en SimulateurCredit.CucheUI. Pensez à également ajuter la directive d imprtatin de l espace de nm SimulateurCredit.CucheMetier dans le fichier Frm1.cs. Vus puvez maintenant, à l aide de la «Bîte à utils» prpsée par le designer et de la fenêtre «Prpriétés» (si vus ne les truver pas, vyez le menu «Affichage»), dessiner vtre fenêtre à vtre guise : essayez de suivre des cnventins de nmmage simples pur les éléments que vus placez, utilisez des éléments de type Label pur afficher du texte statique, utilisez des éléments de type TextBx pur les znes de znes, utilisez des éléments de type TextBx dnt la prpriété ReadOnly vaut True pur afficher du texte dynamique, utilisez des éléments de type Buttn pur les butns. 2. GESTION DES EVENEMENTS UTILISATEURS La gestin des évènements utilisateur (suris et clavier) dans une applicatin de ce type passe par l implémentatin de gestinnaire d évènement pur les différents éléments graphiques de l interface. Cette gestin utilise le mécanisme de delegate et d event vu en curs. Dans ntre applicatin, nus allns gérer les évènements (dispnible de puis la fenêtre de prpriétés, en cliquant sur l icône ) : Leave pur les éléments de type TextBx : ces évènements nus permettrnt de valider la saisie de l utilisateur et de prvquer, le cas échéant, des calculs annexes, Click pur les éléments de type Buttn. Pur ajuter un gestinnaire d évènement, duble-cliquer simple le nm de l évènement et bservez que : 8 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008-2009 l envirnnement de dévelppement vus place directement dans le cde du fichier Frm1.cs, à l intérieur d une méthde dnt la signature crrespnd au delegate asscié à l évènement cncerné, que cette méthde a été assciée à l évènement dans le cde généré dans le fichier Frm1.Designer.cs. Il ne vus plus qu à écrire le cde permettant la créatin d une simulatin : ajutez une référence vers le prjet «CucheMetier» au prjet «CucheUI», ajutez une directive d imprtatin à l encntre de l espace de nm de la cuche métier, ajutez un attribut nmmé param, de type Simulatin.ParametresDuCredit, à la classe MainUI, ajutez l initialisatin de champ au cnstructeur de cette classe, et (enfin ), ajutez dans les différents gestinnaires d évènements le cde permettant de remplir crrectement cette structure, cntentez-vus dans un premier temps, pur le butn «Simuler le crédit» d appeler la méthde AfficheCnsle que vus aurez pris sin de cpier de vtre ancien Prgram.cs vers vtre classe MainUI. Cmpilez et exécutez vtre slutin. B. AFFICHAGE DES RESULTATS Nus prpsns, pur l affichage des résultats, une fenêtre de ce type : Pur cnstruire cette fenêtre : 1. CONSTRUCTION DE L INTERFACE ajutez un nuveau «Frmulaire Windws» nmmé «AmrtissementUI» par un clic drit sur le prjet «CucheUI», dans cette fenêtre, ajutez les éléments nécessaires (je vus cnseille DataGridView pur l affichage du tableau) en prenant sin de mdifier pur chacun des éléments qui affiche une valeur (TextBx et Telecm Bretagne - Département LUSSI 9
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] DataGridView, dnc), la prpriété Mdifiers pur qu ils sient visible au-delà de la classe AmrtissementUI, ajutez les clnnes nécessaires au tableau, pur la gestin du butn «Fermer», sélectinnez le frmulaire lui-même et attribuez à la prpriété CancelButtn le nm de vtre butn et c est tut, vus puvez également bservez les changements esthétiques liés à la prpriété FrmBrderStyle. 2. AFFICHAGE DES RESULTATS Pur afficher cette fenêtre, dûment remplie : créez une nuvelle méthde nmmée AfficheTableau à vtre classe MainUI, qui prend en paramètre une instance de Simulatin, dans cette méthde, créez une nuvelle instance de la classe AmrtissementUI, remplissez le tableau (les lignes d un DataGridView snt représentées par la prpriété Rws) et les champs de texte, afficher l instance de AmrtissementUI en exécutant sa méthde Shw(). V. SEANCE 4 : LA COUCHE «BDD» 1. Depuis l explrateur de serveurs, ajutez une nuvelle base de dnnées «Micrsft SQL Server Cmpact 3.5» : créez une nuvelle base de dnnées dnt vus placerez le fichier à la racine du dssier de la slutin, n attribuez pas de mt de passe, tester la cnnexin, 2. blabla 10 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008-2009 ANNEXES I. CALCUL DE CREDIT A. PRINCIPES 1 Dans le cadre d un crédit immbilier, il est d usage, en France, d une part de se baser sur un taux annuel fixe sur la durée du crédit et, d autre part, d appliquer un calcul de taux prprtinnel pur le taux péridique (utilisé pur le calcul des intérêts), qui s écrit alrs : Avec : - : le nmbre d'échéances par an (1, 2, 4 u 12). Dans ce TP, nus cnsidérerns que les seuls frais imputés sur le crédit snt ceux de l assurance, exprimée par un taux appliqué au capital emprunté. De même que pur le taux d intérêt, n peut calculer le taux péridique d assurance : De plus, nus cnsidérerns que le mntant des échéances est cnstant sur la durée du crédit (exceptin faite de la dernière échéance qui peut nécessiter un léger ajustement). Deux situatins sernt néanmins prises en cmpte : celle ù le nmbre ttal d échéances est dnné et leur mntant calculé et celle, inverse, ù le mntant des échéances est fixé et leur nmbre calculé. Si le nmbre d échéances est fixé, n calcule leur mntant cmme suit : É é 1 1 Avec : - : le capital emprunté, - : le nmbre ttal d'échéances. Si, en revanche, le mntant des échéances est fixé, n calcule leur nmbre ttal cmme suit : Avec : É é lg É é. lg 1 1 Pur tut renseignement cmplémentaire, vus purrez vus référer au site www.cbanque.cm. Telecm Bretagne - Département LUSSI 11
IADBA 2008-2009 [SIMULATEUR DE CREDIT IMMOBILIER] -. : renvie l arrndi à l entier supérieur. Ntns au passage que ce calcul impse que le mntant des échéances sit strictement supérieur à. B. TABLEAU D AMORTISSEMENT Frt de ces dnnées, il est classique de calculer un tableau d amrtissement permettant la restitutin des prévisins d amrtissement du capital, le calcul des intérêts et les frais, échéance par échéance. Par exemple, pur un crédit de 10000, à un taux annuel de 5%, sur une durée d un an avec 12 mensualités par an et un taux d assurance de 0,35%, nus btenns le tableau suivant : Numér Restant dû Intérêts Amrtissement Frais Échéance réelle 1 10 000,00 41,67 814,40 2,92 858,99 2 9 185,60 38,27 817,80 2,92 858,99 3 8 367,80 34,87 821,20 2,92 858,99 4 7 546,60 31,44 824,63 2,92 858,99 5 6 721,97 28,01 828,06 2,92 858,99 6 5 893,91 24,56 831,51 2,92 858,99 7 5 062,40 21,09 834,98 2,92 858,99 8 4 227,42 17,61 838,46 2,92 858,99 9 3 388,96 14,12 841,95 2,92 858,99 10 2 547,01 10,61 845,46 2,92 858,99 11 1 701,55 7,09 848,98 2,92 858,99 12 852,57 3,55 852,57 2,92 859,04 Dans ce tableau, le capital restant dû (CRD) à l échéance est calculé par : Avec : si 1 è échéance sinn - : le capital rembursé à l échéance. Les intérêts à l échéance snt calculés par : L amrtissement à l échéance est calculé par : é ê si dernière échéance É é é ê sinn Les frais à l échéance ne dépendant que de l assurance, ils snt calculés par : 12 Telecm Bretagne - Département LUSSI
[SIMULATEUR DE CREDIT IMMOBILIER] IADBA 2008-2009 Alrs, chaque échéance réellement payée pur le rembursement du crédit est dnnée par : u par : É é é é ê C. RESULTATS ANNEXES É é é É é En plus du tableau d amrtissement, il est curant de furnir : - le cût ttal du prêt, calculé par smme de tutes les échéances réelles, - le cût ttal des frais, calculé par smme de tus les frais du tableau d amrtissement, - et le cût ttal de l assurance, calculé de façn similaire, de puis le tableau. Telecm Bretagne - Département LUSSI 13