Frank Singhoff
L'objectif de cet exercice est de vous montrer comment créer une solution
Visual studio 2015 pour réaliser des programmes
simples en C#.
Avec Visual studio, un logiciel est structuré selon 2 concepts:
Dans cet exercice, on expérimente l'environnement de développement Visual Studio ainsi que C#.
Pour une brève introduction à C#:
voir ici.
Pour une information plus détaillée
voir ici plutôt.
Question 1
public double consulter() public void miseAZero() public void ajouterMemoire(double valeur) public void soustraireMemoire(double valeur) public void multiplierMemoire(double valeur) public void diviserMemoire(double valeur)
public void incrementer(ref int a) public void decrementer(ref int a) public int ajouter(int a, int b) public int soustraire(int a, int b) public int multiplier(int a, int b) public int diviser(int a, int b)
L'objectif de cet exercice est de vous montrer comment mettre en place
un objet réparti avec .NET/C#
On vous demande de construire une solution avec 3 projets:
Question 1 :
On cherche à implanter un serveur .NET Remoting simple, qui héberge un unique objet.
namespace Banque { public interface ICompte { double lire_solde(); string lire_titulaire(); int lire_numero(); void debiter(double montant); void crediter(double montant); } }
using System; namespace Banque { [Serializable] public class CompteNonTrouve : Exception { public CompteNonTrouve() {} public CompteNonTrouve(string message) : base(message) { } public CompteNonTrouve(string message, System.Exception inner) : base(message, inner) { } protected CompteNonTrouve(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { } } public interface ICompte { double lire_solde(); string lire_titulaire(); int lire_numero(); void debiter(double montant); void crediter(double montant); } public interface IUsineCompte { ICompte creation_compte(int numero, string titulaire, double montant); ICompte recherche_compte(int numero); } }Comparé à la première version, cette nouvelle version de l'interface diffère sur deux points :
using System; namespace Banque { [Serializable] public class date_valeur { public int annee; public int jours; public int mois; public date_valeur(int a, int j, int m) {annee=a; jours=j; mois=m;} } [Serializable] public class CompteNonTrouve : Exception { public CompteNonTrouve() {} public CompteNonTrouve(string message) : base(message) { } public CompteNonTrouve(string message, System.Exception inner) : base(message, inner) { } protected CompteNonTrouve(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { } } public interface ICompte { double lire_solde(); string lire_titulaire(); int lire_numero(); date_valeur date_derniere_operation(); void debiter(double montant, date_valeur d); void crediter(double montant, date_valeur d); } public interface ICreationCompte { ICompte creation_compte(int numero, string titulaire, double montant); ICompte recherche_compte(int numero); } }Dans cette nouvelle version, nous utilisons une classe dont les objets seront sérialisés par .NET : la classe date_valeur. Les objets de ce type sont donc passés par copie lors d'une invocation d'un objet distant. La classe date_valeur contient la date à laquelle l'opération sur le compte doit être comptabilisée. Pour un compte donné, la date de valeur de la dernière opération effectuée peut être consultée grâce à la méthode data_derniere_operation.
public class WebService1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } }
public class Abonne { public int numero=0; public string nom=""; public string prenom=""; public string ville=""; }
// connecter l'utilisateur 'nom' avec le mot de passe 'mdp' public void connexion(string nom, string mdp) // déconnecter l'utilisateur actuellemnt connecté public void deconnexion() // envoyer a 'destinataire' le message constitué de 'sujet' et de 'corps' public int envoyer_message(string destinataire, string sujet, string corps) // lire le messeage 'id' public Message lire_message(int id) // lister les messages public int[] lister_messages()
©(Copyright)
singhoff@univ-brest.fr