LINQ to DataSet. Sets. Il est bien entendu qu en circonstances réelles vos objets DataTable viendront

Dimension: px
Commencer à balayer dès la page:

Download "LINQ to DataSet. Sets. Il est bien entendu qu en circonstances réelles vos objets DataTable viendront"

Transcription

1 10 LINQ to DataSet Bien que LINQ to SQL n ait pas encore été abordé dans cet ouvrage, je voudrais signaler que, pour utiliser LINQ to SQL sur une base de données, les classes de code source doivent être générées et compilées spécifiquement pour cette base de données, ou qu un fichier de mapping doit être créé. Cela signifie qu il est impossible d effectuer des requêtes LINQ to SQL sur une base de données inconnue jusqu à l exécution. Mais alors que doit faire le développeur? Les opérateurs LINQ to DataSet permettent d exécuter des requêtes LINQ sur des Data- Set. Étant donné qu un DataSet peut être récupéré par une requête SQL ADO.NET, LINQ to DataSet permet d effectuer des requêtes sur toute base de données accessible via ADO.NET. Cela offre un dynamisme bien plus grand que si vous utilisiez LINQ to SQL. Vous pouvez vous demander dans quelles circonstances la base de données pourrait ne pas être connue jusqu à l exécution. Effectivement, dans les applications traditionnelles, la base de données est connue pendant le développement, et LINQ to DataSet n est pas un passage obligé. Mais qu en est-il si vous développez un utilitaire pour bases de données? Considérons une application telle que SQL Server Enterprise Manager (l interface graphique de SQL Server pour les tâches de création et d administration des bases de données). Jusqu à l exécution, cette application ne connaît pas les bases de données qui ont été installées. Cependant, elle vous permet de connaître leur nom ainsi que celui des différentes tables accessibles dans chacune d entre elles. Le développeur d une telle application n a aucun moyen de générer les classes LINQ to SQL nécessaires à l interfaçage des différentes bases de données à l exécution. LINQ to DataSet devient donc une nécessité. Bien que ce chapitre soit intitulé "LINQ to DataSet", vous verrez que les opérateurs passés en revue sont essentiellement relatifs aux objets DataTable, DataRow et DataColumn. Ne soyez pas surpris si ce chapitre ne fait pas souvent référence aux objets Data- Sets. Il est bien entendu qu en circonstances réelles vos objets DataTable viendront

2 334 LINQ to DataSet Partie IV essentiellement d objets DataSets. Cependant, pour des raisons d indépendance, de concision et de clarté, la plupart des exemples de ce chapitre se basent sur de simples objets DataTable créés par programme. Les données traitées ne sont donc pas extraites d une base de données existante. LINQ to DataSet donne accès à plusieurs opérateurs spécifiques issus de différents assemblies et espaces de noms. Ces opérateurs permettent au développeur d effectuer les actions suivantes : m définitions de séquences d objets DataRows ; m recherche et modification de valeurs DataColumn ; m m obtention de séquences LINQ standard IEnumerable<T> à partir de DataTable afin de pouvoir leur appliquer des opérateurs de requête standard ; copie de séquences de DataRow modifiées dans un DataTable. Outre ces opérateurs LINQ to DataSet, une fois l opérateur AsEnumerable appelé, vous pouvez utiliser les opérateurs de requête standard de LINQ to Objects sur la séquence DataRow retournée, ce qui ajoute encore plus de puissance et de flexibilité à LINQ to DataSet. Référence des assemblies Pour exécuter les exemples de ce chapitre, vous devrez (si elles ne sont pas déjà présentes) ajouter des références aux assemblies System.Data.dll et System.Data.DataSet- Extensions.dll. Espaces de noms référencés Pour être en mesure d utiliser les opérateurs LINQ to DataSet, vous devez ajouter (si elles ne sont pas déjà présentes) les deux directives using suivantes en tête de votre code : using System.Data; using System.Linq; Code commun utilisé dans les exemples Tous les exemples de ce chapitre ont besoin d un objet DataTable pour effectuer des requêtes LINQ to DataSet. Dans un code de production réel, ces objets sont typiquement obtenus en effectuant une requête sur une base de données. Dans plusieurs exemples de ce chapitre, cette configuration est inconfortable, voire insuffisante. À titre d exemple, nous aurons besoin de deux enregistrements identiques pour illustrer la méthode Distinct. Plutôt que jongler avec une base de données pour obtenir les enregistrements

3 Chapitre 10 LINQ to DataSet 335 nécessaires, nous avons préféré créer par programme un objet DataTable qui contient les données nécessaires à chaque exemple. Pour faciliter la définition de l objet DataTable, nous utiliserons un tableau d objets contenu dans la classe prédéfinie Student. Une classe simpliste avec deux membres publics class Student public int Id; public string Name; Vous n avez qu à imaginer que nous interrogeons la table Students, composée de deux colonnes (Id et Name) et dans laquelle chaque enregistrement représente un étudiant. Pour faciliter la création du DataTable et pour ne pas nuire aux détails de chaque exemple, nous utiliserons une méthode commune pour convertir un tableau d objets Student en un objet DataTable. Ceci nous permettra de faire varier simplement les données d un exemple à l autre. Voici le code de cette méthode commune : Conversion d un tableau d objets Student en un DataTable static DataTable GetDataTable(Student[] students) DataTable table = new DataTable(); table.columns.add("id", typeof(int32)); table.columns.add("name", typeof(string)); foreach (Student student in students) table.rows.add(student.id, student.name); return (table); Cette méthode n a rien de bien compliqué. Elle se contente d instancier un objet Data- Table, puis d ajouter deux colonnes et une ligne pour chacun des éléments du tableau students passé en argument. Pour plusieurs des exemples de ce chapitre, il est nécessaire d afficher un objet DataTable, pour s assurer que les résultats sont conformes aux attentes. D un exemple à l autre, les données du DataTable peuvent varier, mais le code permettant d afficher le contenu du DataTable reste le même. Plutôt que répéter ce code dans tous les exemples, nous avons créé une méthode commune que nous appellerons chaque fois que cela sera nécessaire : La méthode OutputDataTableHeader static void OutputDataTableHeader(DataTable dt, int columnwidth) string format = string.format("00,-12", "", columnwidth, ""); // Display the column headings.

4 336 LINQ to DataSet Partie IV foreach(datacolumn column in dt.columns) Console.Write(format, column.columnname); Console.WriteLine(); foreach(datacolumn column in dt.columns) for(int i = 0; i < columnwidth; i++) Console.Write("="); Console.WriteLine(); Cette méthode affiche l en-tête d un objet DataTable sous une forme tabulaire. Opérateurs dédiés aux DataRow Vous vous souvenez certainement que l API LINQ to Objects contient un ensemble d opérateurs de requête standard très utiles lorsqu il s agit d initialiser et/ou de comparer des séquences. Je fais référence aux opérateurs Distinct, Except, Intersect, Union et SequenceEqual, qui définissent une séquence en fonction d une autre. Chacun de ces opérateurs doit être en mesure de tester l égalité des éléments d une séquence pour effectuer l opération pour laquelle il a été conçu. Le test d égalité se fait en appliquant les méthodes GetHashCode et Equals aux éléments. En ce qui concerne les DataRow, ces deux méthodes provoquent la comparaison des références des éléments, ce qui n est pas le comportement souhaité. Mais, rassurez-vous, ces opérateurs possèdent un autre prototype dont nous n avons pas parlé dans les chapitres relatifs à LINQ to Objects. Ce prototype permet de passer un argument complémentaire : IEqualityComparer. Par commodité, un objet comparateur a été spécialement défini pour ces versions des opérateurs : System.Data.DataRowComparer.Default. Cette classe se trouve dans l espace de noms System.Data et l assembly System.Data.Entity.dll. L égalité est déterminée en comparant le nombre de colonnes et le type de donnée statique de chaque colonne et en utilisant l interface IComparable sur le type de donnée dynamique de la colonne si celui-ci l implémente. Dans le cas contraire, la méthode System.Object Equals est appelée. Ces prototypes sont définis dans la même classe statique que les autres : System.Linq.Enumerable. Dans cette section, nous allons donner quelques exemples pour illustrer la mauvaise et, bien entendu, la bonne façon d effectuer des comparaisons sur des objets DataSet. Opérateur Distinct L opérateur Distinct supprime les lignes en double dans une séquence d objets. Il retourne un objet dont l énumération renvoie la séquence source privée des doublons.

5 Chapitre 10 LINQ to DataSet 337 Cet opérateur devrait pouvoir déterminer l égalité entre les différentes lignes en appelant les méthodes GetHashCode et Equals sur chacun des éléments. Cependant, pour des objets de type DataRow, cette technique ne donne pas le résultat recherché. Pour obtenir le résultat escompté, nous appellerons un nouveau prototype de cet opérateur et nous lui passerons le comparateur System.Data.DataRowComparer.Default dans son deuxième argument. La comparaison est effectuée sur chacune des colonnes d une ligne. Elle se base sur le type de donnée statique de chaque colonne. L interface IComparable est utilisée sur les colonnes qui implémentent cette interface. La méthode statique System.Object.Equals est utilisée sur les autres. Prototype Un seul prototype de l opérateur Distinct sera étudié dans ce chapitre : public static IEnumerable<T> Distinct<T> ( this IEnumerable<T> source, IEqualityComparer<T> comparer); Exemples Dans le premier exemple, l objet DataTable sera créé en appliquant la méthode commune GetDataTable à un tableau d objet Student. À dessein, ce tableau comprendra deux fois la même ligne : celle dont le champ Id vaut 1. Pour mettre en évidence la ligne en double dans le DataTable, le tableau sera affiché. La ligne en double sera ensuite enlevée à l aide de l opérateur Distinct, et l objet DataTable sera à nouveau affiché, pour montrer que le doublon a été supprimé. Le code utilisé apparaît dans le Listing Listing 10.1 : L opérateur Distinct associé à un comparateur d égalité. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 6, Name = "Ulyses Hutchens", new Student Id = 19, Name = "Bob Tanko", new Student Id = 45, Name = "Erin Doutensal", new Student Id = 1, Name = "Joe Rattz", new Student Id = 12, Name = "Bob Mapplethorpe", new Student Id = 17, Name = "Anthony Adams", new Student Id = 32, Name = "Dignan Stephens" ; DataTable dt = GetDataTable(students); Console.WriteLine("0Avant l appel à Distinct()0", OutputDataTableHeader(dt, 15);

6 338 LINQ to DataSet Partie IV foreach (DataRow datarow in dt.rows) Console.WriteLine("0,-151,-15", IEnumerable<DataRow> distinct = dt.asenumerable().distinct(datarowcomparer.default); Console.WriteLine("0Après l appel à Distinct()0", OutputDataTableHeader(dt, 15); foreach (DataRow datarow in distinct) Console.WriteLine("0,-151,-15", L opérateur AsEnumerable a été utilisé pour obtenir la séquence d objets DataRow à partir du DataTable. Ceci afin d assurer la compatibilité avec l opérateur Distinct. Remarquez également que, dans le tableau students, la ligne dont le champ Id vaut "1" apparaît en double. Vous avez sans doute noté que la méthode Field a été appelée sur l objet DataRow. Pour l instant, tout ce que vous devez en savoir, c est qu il s agit d une méthode qui facilite l obtention des valeurs des objets DataColumn à partir d un DataRow. L opérateur Field<T> sera étudié en détail un peu plus loin dans ce chapitre, dans la section "Opérateurs dédiés aux champs". Voici les résultats : Avant l appel à Distinct() 6 Ulyses Hutchens 19 Bob Tanko 45 Erin Doutensal 12 Bob Mapplethorpe 17 Anthony Adams 32 Dignan Stephens Après l appel à Distinct() 6 aulyses Hutchens 19 Bob Tanko 45 Erin Doutensal 12 Bob Mapplethorpe 17 Anthony Adams 32 Dignan Stephens

7 Chapitre 10 LINQ to DataSet 339 Comme vous le voyez, la ligne dont le champ Id vaut 1 apparaît en double avant l appel à l opérateur Distinct. Elle n apparaît plus qu une seule fois lorsque cet opérateur a été appelé. Dans notre deuxième exemple, nous allons voir ce qui se passerait si l opérateur Distinct avait été appelé sans spécifier l objet comparer (voir Listing 10.2). Listing 10.2 : L opérateur Distinct appelé sans comparateur d égalité. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 6, Name = "Ulyses Hutchens", new Student Id = 19, Name = "Bob Tanko", new Student Id = 45, Name = "Erin Doutensal", new Student Id = 1, Name = "Joe Rattz", new Student Id = 12, Name = "Bob Mapplethorpe", new Student Id = 17, Name = "Anthony Adams", new Student Id = 32, Name = "Dignan Stephens" ; DataTable dt = GetDataTable(students); Console.WriteLine("0Avant l appel à Distinct()0", OutputDataTableHeader(dt, 15); foreach (DataRow datarow in dt.rows) Console.WriteLine("0,-151,-15", IEnumerable<DataRow> distinct = dt.asenumerable().distinct(); Console.WriteLine("0Après l appel à Distinct()0", OutputDataTableHeader(dt, 15); foreach (DataRow datarow in distinct) Console.WriteLine("0,-151,-15", La seule différence entre ce code et le précédent se situe au niveau de l opérateur Distinct : dans le premier cas, on utilise un comparateur d égalité, dans le second cas, non. Cette deuxième technique va-t-elle supprimer le doublon? Jetons un œil aux résultats : Avant l appel à Distinct() 6 Ulyses Hutchens 19 Bob Tanko 45 Erin Doutensal

8 340 LINQ to DataSet Partie IV 12 Bob Mapplethorpe 17 Anthony Adams 32 Dignan Stephens Après l appel à Distinct() 6 Ulyses Hutchens 19 Bob Tanko 45 Erin Doutensal 12 Bob Mapplethorpe 17 Anthony Adams 32 Dignan Stephens Ces résultats ne sont pas concluants. Comme vous le voyez, la deuxième technique de comparaison est inefficace. Opérateur Except L opérateur Except renvoie une séquence composée des objets DataRow de la première séquence qui n appartiennent pas à la seconde. Les éléments de la séquence de sortie apparaissent dans l ordre original de la séquence d entrée. Pour déterminer quels éléments sont uniques, l opérateur Except doit être en mesure de déterminer si deux éléments sont égaux. Pour ce faire, il devrait suffire d utiliser les méthodes GetHashCode et Equals. Cependant, étant donné que les objets comparés sont des DataRow, un prototype spécifique doit être utilisé. Le deuxième argument de ce prototype désigne le comparateur (System.Data.DataRowComparer.Default) à utiliser. La comparaison est effectuée sur chacune des colonnes d une ligne. Elle se base sur le type de donnée statique de chaque colonne. L interface IComparable est utilisée sur les colonnes qui l implémentent. La méthode statique System.Object.Equals est utilisée sur les autres. Prototype Nous nous intéresserons à un seul prototype de cet opérateur : public static IEnumerable<T> Except<T> ( this IEnumerable<T> first, IEnumerable<T> second, IEqualityComparer<T> comparer); Exemple Dans cet exemple, nous appellerons l opérateur Except à deux reprises. Dans le premier appel, le comparateur passé sera System.Data.DataRowComparer.Default. Les résultats de la comparaison devraient donc être conformes aux attentes. Dans le

9 Chapitre 10 LINQ to DataSet 341 second appel, aucun comparateur ne sera passé au prototype. Comme vous le verrez, la comparaison ne fonctionnera pas (voir Listing 10.3). Listing 10.3 : Appel de l opérateur Except avec et sans comparateur. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 7, Name = "Anthony Adams", new Student Id = 13, Name = "Stacy Sinclair", new Student Id = 72, Name = "Dignan Stephens" ; Student[] students2 = new Student Id = 5, Name = "Abe Henry", new Student Id = 7, Name = "Anthony Adams", new Student Id = 29, Name = "Future Man", new Student Id = 72, Name = "Dignan Stephens" ; DataTable dt1 = GetDataTable(students); IEnumerable<DataRow> seq1 = dt1.asenumerable(); DataTable dt2 = GetDataTable(students2); IEnumerable<DataRow> seq2 = dt2.asenumerable(); IEnumerable<DataRow> except = seq1.except(seq2, System.Data.DataRowComparer.Default); Console.WriteLine("0Résultats de l opérateur Except() avec le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in except) Console.WriteLine("0,-151,-15", except = seq1.except(seq2); Console.WriteLine("0Résultats de l opérateur Except() sans le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in except) Console.WriteLine("0,-151,-15", Cet exemple crée deux objets DataTable et les remplit avec les données stockées dans les tableaux Student. La méthode AsEnumerable est alors appelée pour transformer les deux objets DataTable en séquences. Enfin, l opérateur Except est appelé sur les deux séquences et les résultats sont affichés. Comme vous pouvez le voir, le premier appel à l opérateur Except transmet le comparateur System.Data.DataRowComparer.Default dans le deuxième argument. Le second appel ne transmet aucun comparateur.

10 342 LINQ to DataSet Partie IV Voici les résultats affichés lors de l appui sur Ctrl+F5 : Résultats de l opérateur Except() avec le comparateur 13 Stacy Sinclair Résultats de l opérateur Except() sans le comparateur 7 Anthony Adams 13 Stacy Sinclair 72 Dignan Stephens Comme vous pouvez le voir, seul le premier appel à l opérateur Except a été en mesure de comparer de façon correcte les données des deux séquences. Opérateur Intersect L opérateur Intersect renvoie une séquence d objets DataRow qui représente l intersection des deux séquences DataRow passées en entrée. La séquence de sortie contient les éléments uniques des deux séquences d entrée, listés dans leur ordre d apparition original. Pour déterminer quels éléments sont uniques, l opérateur Intersect doit être en mesure de déterminer si deux éléments sont égaux. Pour ce faire, il devrait lui suffire d utiliser les méthodes GetHashCode et Equals. Cependant, étant donné que les objets comparés sont de type DataRow, un prototype spécifique doit être utilisé. Le deuxième argument de ce prototype désigne le comparateur (System.Data.DataRowComparer.Default) à utiliser. La comparaison est effectuée sur chacune des colonnes d une ligne. Elle se base sur le type de donnée statique de chaque colonne. L interface IComparable est utilisée sur les colonnes qui implémentent cette interface. La méthode statique System.Object.Equals est utilisée sur les autres colonnes. Prototype Nous nous intéresserons à un seul prototype de cet opérateur : public static IEnumerable<T> Intersect<T> ( this IEnumerable<T> first, IEnumerable<T> second, IEqualityComparer<T> comparer); Exemple Nous utiliserons le même code que dans l exemple de l opérateur Except mais, ici, c est l opérateur Intersect qui sera appelé (voir Listing 10.4).

11 Chapitre 10 LINQ to DataSet 343 Listing 10.4 : Appel de l opérateur Intersect avec et sans comparateur. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 7, Name = "Anthony Adams", new Student Id = 13, Name = "Stacy Sinclair", new Student Id = 72, Name = "Dignan Stephens" ; Student[] students2 = new Student Id = 5, Name = "Abe Henry", new Student Id = 7, Name = "Anthony Adams", new Student Id = 29, Name = "Future Man", new Student Id = 72, Name = "Dignan Stephens" ; DataTable dt1 = GetDataTable(students); IEnumerable<DataRow> seq1 = dt1.asenumerable(); DataTable dt2 = GetDataTable(students2); IEnumerable<DataRow> seq2 = dt2.asenumerable(); IEnumerable<DataRow> intersect = seq1.intersect(seq2, System.Data.DataRowComparer.Default); Console.WriteLine("0Résultats de l opérateur Intersect() avec le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in intersect) Console.WriteLine("0,-151,-15", intersect = seq1.intersect(seq2); Console.WriteLine("0Résultats de l opérateur Intersect() sans le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in intersect) Console.WriteLine("0,-151,-15", Rien de nouveau dans ce code : deux objets DataTable sont créés et initialisés avec les données des tableaux Student. Ils sont ensuite convertis en séquences, puis l opérateur Intersect leur est appliqué, avec puis sans comparateur. Les résultats sont affichés après chaque appel à l opérateur Intersect.

12 344 LINQ to DataSet Partie IV Voici les informations affichées suite à l appui sur Ctrl+F5 : Résultats de l opérateur Intersect() avec le comparateur 7 Anthony Adams 72 Dignan Stephens Résultats de l opérateur Intersect() sans le comparateur Comme vous pouvez le voir, seul le premier appel à l opérateur Intersect a été en mesure de comparer de façon correcte les données des deux séquences. Opérateur Union L opérateur Union renvoie une séquence d objets DataRow qui représente la réunion des deux séquences DataRow passées en entrée. La séquence de sortie contient les éléments de la première séquence suivis des éléments de la seconde séquence qui n ont pas déjà été cités. Pour déterminer quels éléments ont déjà été sélectionnés dans la première séquence, l opérateur Union doit être en mesure de déterminer si deux éléments sont égaux. Pour ce faire, il devrait lui suffire d utiliser les méthodes GetHashCode et Equals. Cependant, étant donné que les objets comparés sont de type DataRow, un prototype spécifique doit être utilisé. Le deuxième argument de ce prototype désigne le comparateur (System.Data.DataRowComparer.Default) à utiliser. La comparaison est effectuée sur chacune des colonnes d une ligne. Elle se base sur le type de donnée statique de chaque colonne. L interface IComparable est utilisée sur les colonnes qui implémentent cette interface. La méthode statique System.Object.Equals est utilisée sur les autres colonnes. Prototype Nous nous intéresserons à un seul prototype de cet opérateur : public static IEnumerable<T> Union<T> ( this IEnumerable<T> first, IEnumerable<T> second, IEqualityComparer<T> comparer); Exemple Nous utiliserons le même code que dans l exemple de l opérateur Intersect mais, ici, c est l opérateur Union qui sera appelé (voir Listing 10.5).

13 Chapitre 10 LINQ to DataSet 345 Listing 10.5 : Appel de l opérateur Union avec et sans comparateur. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 7, Name = "Anthony Adams", new Student Id = 13, Name = "Stacy Sinclair", new Student Id = 72, Name = "Dignan Stephens" ; Student[] students2 = new Student Id = 5, Name = "Abe Henry", new Student Id = 7, Name = "Anthony Adams", new Student Id = 29, Name = "Future Man", new Student Id = 72, Name = "Dignan Stephens" ; DataTable dt1 = GetDataTable(students); IEnumerable<DataRow> seq1 = dt1.asenumerable(); DataTable dt2 = GetDataTable(students2); IEnumerable<DataRow> seq2 = dt2.asenumerable(); IEnumerable<DataRow> union = seq1.union(seq2, System.Data.DataRowComparer.Default); Console.WriteLine("0Résultats de l opérateur Union() avec le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in union) Console.WriteLine("0,-151,-15", union = seq1.union(seq2); Console.WriteLine("0Résultats de l opérateur Union() sans le comparateur0", OutputDataTableHeader(dt1, 15); foreach (DataRow datarow in union) Console.WriteLine("0,-151,-15", Ici encore, rien de nouveau dans ce code : deux objets DataTable sont créés et initialisés avec les données des tableaux Student. Ils sont ensuite convertis en séquences, puis l opérateur Union leur est appliqué, avec puis sans comparateur. Les résultats sont affichés après chaque appel à l opérateur Union.

14 346 LINQ to DataSet Partie IV Voici les informations affichées suite à l appui sur Ctrl+F5 : Résultats de l opérateur Union() avec le comparateur 7 Anthony Adams 13 Stacy Sinclair 72 Dignan Stephens 5 Abe Henry 29 Future Man Résultats de l opérateur Union() sans le comparateur 7 Anthony Adams 13 Stacy Sinclair 72 Dignan Stephens 5 Abe Henry 7 Anthony Adams 29 Future Man 72 Dignan Stephens Comme vous pouvez le voir, seul le premier appel à l opérateur Union a donné les résultats escomptés. Opérateur SequencialEqual L opérateur SequencialEqual compare deux séquences d objets DataRow et détermine leur égalité. Pour ce faire, les deux séquences sources sont énumérées et leurs objets DataRow, comparés. Si les deux séquences sources ont le même nombre de lignes, et si tous les objets DataRow sont égaux, l opérateur retourne la valeur true. Dans le cas contraire, il retourne la valeur false. Cet opérateur doit être en mesure de déterminer si deux éléments sont égaux. Pour ce faire, il devrait lui suffire d utiliser les méthodes GetHashCode et Equals. Cependant, étant donné que les objets comparés sont de type DataRow, un prototype spécifique doit être utilisé. Le deuxième argument de ce prototype désigne le comparateur (System.Data.DataRowComparer.Default) à utiliser. La comparaison est effectuée sur chacune des colonnes d une ligne. Elle se base sur le type de donnée statique de chaque colonne. L interface IComparable est utilisée sur les colonnes qui l implémentent. La méthode statique System.Object.Equals est utilisée sur les autres colonnes. Prototype Nous nous intéresserons à un seul prototype de cet opérateur : public static bool SequenceEqual<T> ( this IEnumerable<T> first, IEnumerable<T> second, IEqualityComparer<T> comparer);

15 Chapitre 10 LINQ to DataSet 347 Exemple Dans cet exemple, nous allons construire deux séquences identiques d objets DataRow et les comparer avec l opérateur SequencialEqual. Deux comparaisons seront effectuées. La première utilisera un comparateur et la seconde, non (voir Listing 10.6). Listing 10.6 : Appel de l opérateur SequenceEqual avec et sans comparateur. Student[] students = new Student Id = 1, Name = "Joe Rattz", new Student Id = 7, Name = "Anthony Adams", new Student Id = 13, Name = "Stacy Sinclair", new Student Id = 72, Name = "Dignan Stephens" ; DataTable dt1 = GetDataTable(students); IEnumerable<DataRow> seq1 = dt1.asenumerable(); DataTable dt2 = GetDataTable(students); IEnumerable<DataRow> seq2 = dt2.asenumerable(); bool equal = seq1.sequenceequal(seq2, System.Data.DataRowComparer.Default); Console.WriteLine("Appel de SequenceEqual() avec comparateur : 0", equal); equal = seq1.sequenceequal(seq2); Console.WriteLine("Appel de SequenceEqual() sans le comparateur : 0", equal); Comme on pouvait s y attendre, le premier appel à l opérateur SequenceEqual indique que les deux séquences sont égales, alors que le second indique qu elles sont différentes : Appel de SequenceEqual() avec comparateur : True Appel de SequenceEqual() sans comparateur : False Opérateurs dédiés aux champs Ces opérateurs viennent compléter ceux passés en revue dans la section précédente. Ils sont définis dans l assembly System.Data.DataSetExtensions.dll, dans la classe statique System.Data.DataRowExtensions. Vous avez certainement remarqué que, dans la plupart des exemples précédents, nous avons utilisé l opérateur Field<T> pour extraire d un DataRow la valeur d un objet DataColumn. Cet opérateur a deux intérêts : grâce à lui, la comparaison de données est possible, et il gère la valeur null. La manipulation des objets DataRow présente un problème : les DataColumn, de type "valeur" (à opposer au type "référence"), ne peuvent pas être comparés correctement. En effet, ils peuvent contenir une donnée de type quelconque : un entier, une chaîne ou un autre type de donnée. Si, par exemple, un DataColumn contient une valeur de type int, il doit être converti en une référence de type Object. Cette conversion est connue sous le nom "boxing" dans l environnement de développement.net. L opération inverse (la transformation d un type référence en un type valeur) est appelée "unboxing". Le problème se situe au niveau du boxing.

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté Plan Accès aux données dans le framework.net Lionel Seinturier 1. Mode connecté Mode non connecté 2. 3. Université Lille 1 Lionel.Seinturier@univ-lille1.fr 27/3/14 1 Lionel Seinturier 2 Lionel Seinturier

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Sommaire. 2 LINQ to Objects

Sommaire. 2 LINQ to Objects LINQ To Object 2 LINQ to Objects Sommaire 1 LINQ to Object... 3 1.1 Introduction par l exemple.... 3 1.2 Evaluation de requête différée... 6 1.3 Les objets «Enumerable» et «Queryable»... 7 1.4 Les mots-clés

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Construire une application marketing Facebook sur la plateforme Windows Azure

Construire une application marketing Facebook sur la plateforme Windows Azure Construire une application marketing Facebook sur la plateforme Windows Azure Lorsque le «Social Effect» est au rendez-vous, comment s assurer que votre application va supporter la montée en charge? Nous

Plus en détail

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication Les méthodes clefs pour le management des applications (C#, C++, VB) InstallationManager.FindPackagesForCurrentPublisher

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

LE LANGAGE POWERSHELL

LE LANGAGE POWERSHELL LE LANGAGE POWERSHELL SISR4 : Scripting Un fichier CSV se présente comme une liste d'éléments séparés par un caractère qui peut être un point virgule (;), une virgule (,) ou tout autre caractère. Le plus

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

Introduction par l'exemple à Entity Framework 5 Code First

Introduction par l'exemple à Entity Framework 5 Code First Introduction par l'exemple à Entity Framework 5 Code First serge.tahe at istia.univ-angers.fr octobre 0 /7 Table des matières INTRODUCTION...4. OBJECTIF...4. LES OUTILS UTILISÉS...5.3 LES CODES SOURCE...5.4

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté. ADO.NET Ado.net est une technologie d'accès aux données qui fournit un ensemble des classes permettant d'accéder aux données relationnelles. Même si Microsoft a repris le nom d'ado, déjà présent en VB6,

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

L exclusion mutuelle distribuée

L exclusion mutuelle distribuée L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué

Plus en détail

Introduction à ADO.NET

Introduction à ADO.NET Département d informatique 420 KED-LG, conception de bases de données Introduction à ADO.NET 1 Table des matières 1. Introduction... 3 2. Prés-requis :... 4 3. L objet OracleConnection... 6 4. L objet

Plus en détail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

Programmation Orientée Objet

Programmation Orientée Objet Programmation Orientée Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 21 octobre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014

Plus en détail

Programmation par les Objets en Java

Programmation par les Objets en Java Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2) Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation

Plus en détail

Plateforme PAYZEN. Définition de Web-services

Plateforme PAYZEN. Définition de Web-services Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Console IAP Manuel d utilisation

Console IAP Manuel d utilisation Console IAP Manuel d utilisation Préface Cette application fut un projet lancé à l initiative du service IAP (Industrialisation Automatisation et Projet) de l entreprise SEA TPI, composé de développeurs

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version

Plus en détail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copyleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version

Plus en détail

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr

Convers3 Documentation version 3.07. Par Eric DAVID : vtopo@free.fr Convers3 Documentation version 3.07 Par Eric DAVID : vtopo@free.fr 1 INSTALLATION DE CONVERS... 2 2 UTILISATION DE CONVERS... 2 2.1 FENETRE PRINCIPALE... 2 2.1.1 Convention de saisie et d affichage des

Plus en détail

Bases de données et fournisseurs de contenu

Bases de données et fournisseurs de contenu 8 Bases de données et fournisseurs de contenu Au sommaire de ce chapitre : Créer des bases de données et utiliser SQLite Utiliser les fournisseurs de contenu, les curseurs et les content values pour stocker,

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

SQL Parser XML Xquery : Approche de détection des injections SQL

SQL Parser XML Xquery : Approche de détection des injections SQL SQL Parser XML Xquery : Approche de détection des injections SQL Ramahefy T.R. 1, Rakotomiraho S. 2, Rabeherimanana L. 3 Laboratoire de Recherche Systèmes Embarqués, Instrumentation et Modélisation des

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques

Plus en détail

PHP. PHP et bases de données

PHP. PHP et bases de données Accés aux bases de données Une des raisons du succès de PHP Support d un grand nombre de bases - MySQL - Oracle - PostgreSQL - SQLite - Microso> Access - DBM - IBM Informix -... Accés aux bases de données

Plus en détail

Définition des Webservices Ordre de paiement par email. Version 1.0

Définition des Webservices Ordre de paiement par email. Version 1.0 Définition des Webservices Ordre de paiement par email Version 1.0 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Historique du document

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Diagramme de déploiement

Diagramme de déploiement Table des matières Table des matières... Diagramme de déploiement... 2 Diagramme de cas d utilisation global... 3 Sous-système : Gestion des utilisateurs... 4 Diagramme de cas d utilisations... 4 Diagramme

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Approche Contract First

Approche Contract First Exemple HelpDesk Approche Contract First Développement d un premier web service en utilisant l approche contract first (ou WSDL First) Écriture du wsdl avant d écrire le code java Autre possibilité implementation

Plus en détail

A.P.I. Kuka Manuel de l utilisateur Version 0.0.5

A.P.I. Kuka Manuel de l utilisateur Version 0.0.5 A.P.I. Kuka Manuel de l utilisateur Version 0.0.5 Paul Chavent Kubrick 8 septembre 2003 1 kuka api 0.0.5 : Manuel de l utilisateur Table des matières 1 Utilisation sur le robot (serveur) 3 1.1 Installation............................................

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 PHP Bertrand Estellon Aix-Marseille Université 26 avril 2012 Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 SQLite et PDO Base de données SQLite et PDO SQLite écrit les données relatives à la base dans

Plus en détail

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Techniques d interaction dans la visualisation de l information Séminaire DIVA Techniques d interaction dans la visualisation de l information Séminaire DIVA Zingg Luca, luca.zingg@unifr.ch 13 février 2007 Résumé Le but de cet article est d avoir une vision globale des techniques

Plus en détail

4 Exemples de problèmes MapReduce incrémentaux

4 Exemples de problèmes MapReduce incrémentaux 4 Exemples de problèmes MapReduce incrémentaux 1 / 32 Calcul des plus courtes distances à un noeud d un graphe Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe Algorithme PageRank

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control HMI target Visu / PLC HMI Pour réaliser une interface homme machine avec PLC control VERSION : 1.4 / PH DATE : 5 Novembre 2014 Sommaire Ce manuel explique de manière pratique les étapes successives pour

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014 CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014 SECONDE ÉPREUVE Épreuve de cas pratique dans la spécialité correspondant à l'option choisie par le candidat Option D SUJET N 1 Durée

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail