Exemple concret
Pour mieux comprendre ce principe, je vous propose un exemple réel.
Imaginons que nous souhaitions mettre en place un système de vente en ligne
qui charge des produits depuis une base de données.
Pour la simplicité de l’exemple, la base de données est simulée avec une liste d’objet
en mémoire.
Le projet d’exemple contient deux classes importantes :
La classe Product qui contient les informations d’un produit
La classe Database qui s’occupe de charger les données
Voici le code de la classe Product :
namespace SrpDemo
{
public class Product
{
public string Name { get; private set ; }
public double Price { get; private set ; }
public Product(string name, double price)
{
Name = name;
Price = price;
}
}
}
Voici le code de la classe Database :
using [Link];
using [Link];
namespace SrpDemo
{
public class Database
{
List<Product > productsInMemory;
public void Connect()
{
// simulate database connection
}
//Chargement des données
public void LoadData()
{
productsInMemory = new List <Product>();
[Link]( new Product ("Product1", 100));
[Link]( new Product ("Product2", 255));
}
public IEnumerable <Product> GetProducts( bool applyVAT)
{
Connect();
LoadData();
// simulate database query (using linq)
var products = (from p in productsInMemory select p).AsEnumerable();
double vat = applyVAT ? 1.196 : 1;
// apply VAT
return from p in products
select new Product([Link], [Link] * vat);
}
}
}
Dans cet exemple, j’ai crée une application du type console (ce qui est le projet le
plus simple possible). Voici le code de la classe Program :
using System;
namespace SrpDemo
{
class Program
{
static void Main(string[] args)
{
Database db = new Database();
var products = [Link](true );
foreach (var p in products)
[Link]("{0} = {1} Euros TTC" , [Link], [Link]);
// To make a pause
[Link]();
}
}
}