Présentation des nouveautés apportées par la version 7 du langage C# : Méthodes locales, Tuples, Déconstructeurs, Pattern matching, Variables de sortie, Membres sous forme d’expression, Amélioration de la levée des exceptions, ...
Si vous pensez encore que le data-binding, l’inversion de dépendances, le pattern MVC ou bien encore la gestion de la navigation sont réservés au code Java des applications web modernes, courrez assistez à ce workshop. AngularJS, le dernier framework JavaScript de chez Google, devrait vous surprendre.
Basée sur l’université AngularJS, ou le futur du développement Web présentée lors de Devoxx France 2013, ce workshop a pour objectif de vous initier à AngularJS.
Les concepts fondamentaux seront mis en en action au travers de l’application Game Store.
Côté industrialisation, nous verrons que tests unitaires, tests fonctionnels et infrastructure de build ne sont pas non plus délaissés.
A l’heure où la couche présentation des applications web est de plus en plus déportée côté client, ce workshop a pour objectif de démystifier ce type de framework permettant de structurer une application JavaScript.
Frontend development requires a lot a different tools. This presentation is about these technos like AngularJS, Javascript, Jquery, Sass, Grunt, Zurb foundation, Karma, Protractor, ...
This presentation was shown during a TechnoByte (session of internal formation) on 2014/06/10
Présentation des nouveautés apportées par la version 7 du langage C# : Méthodes locales, Tuples, Déconstructeurs, Pattern matching, Variables de sortie, Membres sous forme d’expression, Amélioration de la levée des exceptions, ...
Si vous pensez encore que le data-binding, l’inversion de dépendances, le pattern MVC ou bien encore la gestion de la navigation sont réservés au code Java des applications web modernes, courrez assistez à ce workshop. AngularJS, le dernier framework JavaScript de chez Google, devrait vous surprendre.
Basée sur l’université AngularJS, ou le futur du développement Web présentée lors de Devoxx France 2013, ce workshop a pour objectif de vous initier à AngularJS.
Les concepts fondamentaux seront mis en en action au travers de l’application Game Store.
Côté industrialisation, nous verrons que tests unitaires, tests fonctionnels et infrastructure de build ne sont pas non plus délaissés.
A l’heure où la couche présentation des applications web est de plus en plus déportée côté client, ce workshop a pour objectif de démystifier ce type de framework permettant de structurer une application JavaScript.
Frontend development requires a lot a different tools. This presentation is about these technos like AngularJS, Javascript, Jquery, Sass, Grunt, Zurb foundation, Karma, Protractor, ...
This presentation was shown during a TechnoByte (session of internal formation) on 2014/06/10
Objectif général
Prendre en main l’un des frameworks PHP les plus utilisés
Objectifs opérationnels :
Faire correspondre une URL donnée à un traitement précis grâce au routage
Traiter les requêtes grâce aux contrôleurs
Intégrer des données dans des templates grâce à TWIG
Faciliter la communication avec une base de données grâce à Doctrine
Permettre à un utilisateur d’initialiser ou de modifier les attributs d'un objet métier grâce aux formulaires
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Des mises à jour? Emmenez votre application Stitch encore plus loin grâce aux...MongoDB
MongoDB Stitch est une plate-forme "serverless" conçue pour vous aider à créer facilement et en toute sécurité des applications utilisant votre cluster sur MongoDB Atlas. Il permet aux développeurs de se concentrer sur la création d'applications plutôt que sur la production de code de manipulation de données, l'intégration de services ou les problèmes d'infrastructure...
Dans un contexte où la transmission et l'installation d'agriculteurs sont des enjeux cruciaux pour la profession agricole, de nouveaux agriculteurs s'installent chaque année et, parmi eux, certains Bac+5 ou plus. Les cursus des écoles d'ingénieurs n'ont pas vocation à former de futurs agriculteurs. Pourtant, certains apprenants ayant suivi ces cursus BAC + 5, qu'ils soient ou non issus du milieu agricole, tentent l'aventure de l'entrepreneuriat agricole. Qui sont-ils ? Quelles sont leurs motivations et visions ? Comment travaillent-ils ?
Objectif général
Prendre en main l’un des frameworks PHP les plus utilisés
Objectifs opérationnels :
Faire correspondre une URL donnée à un traitement précis grâce au routage
Traiter les requêtes grâce aux contrôleurs
Intégrer des données dans des templates grâce à TWIG
Faciliter la communication avec une base de données grâce à Doctrine
Permettre à un utilisateur d’initialiser ou de modifier les attributs d'un objet métier grâce aux formulaires
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Des mises à jour? Emmenez votre application Stitch encore plus loin grâce aux...MongoDB
MongoDB Stitch est une plate-forme "serverless" conçue pour vous aider à créer facilement et en toute sécurité des applications utilisant votre cluster sur MongoDB Atlas. Il permet aux développeurs de se concentrer sur la création d'applications plutôt que sur la production de code de manipulation de données, l'intégration de services ou les problèmes d'infrastructure...
Dans un contexte où la transmission et l'installation d'agriculteurs sont des enjeux cruciaux pour la profession agricole, de nouveaux agriculteurs s'installent chaque année et, parmi eux, certains Bac+5 ou plus. Les cursus des écoles d'ingénieurs n'ont pas vocation à former de futurs agriculteurs. Pourtant, certains apprenants ayant suivi ces cursus BAC + 5, qu'ils soient ou non issus du milieu agricole, tentent l'aventure de l'entrepreneuriat agricole. Qui sont-ils ? Quelles sont leurs motivations et visions ? Comment travaillent-ils ?
Si la baisse de la productivité est effective dans toutes les économies développées... elle est particulièrement marquée en France. Au niveau national, cet essoufflement touche tous les secteurs, et plus particulièrement celui de l’industrie, usuellement caractérisé par des gains de productivité élevés. Depuis la crise Covid, le secteur industriel contribue pour 35 % environ à cette perte, alors qu’il ne représente que 9,3 % de la valeur ajoutée nationale brute en 2023. Dans ce contexte, est-il possible de mener une politique de réindustrialisation du pays sans y associer un objectif de hausse des gains de productivité ?Non rappelle ce Cube. Au contraire, ces deux objectifs, jusqu’alors indépendants l’un de l’autre, sont désormais deux défis à relever conjointement. En analysant les différents explications à la baisse de celle-ci observée en France et dans les autres économies développées, ce Cube suggère que l’augmenter en parallèle d’une politique de réindustrialisation sous-entend une réallocation des facteurs de production vers les entreprises industrielles à fort potentiel. Elle suppose également une une meilleure affectation des ressources.
Comprendre le vote aux élections européennes du 9 juin 2024
Projet base de donnée
1. Réponses
Etape 1 :
Le modèle navigationnel GPC du diagramme de classe est le suivant :
ClientPromo
matC* : int
nomC : varchar
adrC : varchar
lesChantiers
lesAssocies
Associe
noAs
nomAs
capital
<<Projet>>
noP* : int
livraisonP :Date
SiteChantier
noSC* : int
villeSC : varchar
leChefDirige
leChefSuper
Chef
nas*:int
anServ : int
Usine
Proprio
noU* : int leClient
villeU : varchar leProjet
ChargeProjet
nasCP* : varchar
refPC
refUs
totalBudgetP : real
margeP : real
(c,d)
ProjetCourant
stDepensePC : real
cumulPayePC : real
margeDispPC : real
refCB
CompteBanque
noCB* : int
soldeCB : real
dateOuvCB : Date
dateFinCB : Date
ProjetTermine
totalDepensesPT : real
Etape 2
Supervision et direction de chantier (une partie du diagramme de classe)
Voici le diagramme de classe UML de départ :
2. Dirige >SiteChantier Chef
0..1 1
noSC* : int
nas* :int
villeSC : varchar
0..10..3 anServ : int
Supervise >
ChangerChef()
Le modèle navigationnel partiel correspondant est le suivant :
SiteChantier
noSC* : int
villeSC : varchar
leChefDirige
leChefSuper
Chef
nas* :int
anServ : int
3. ChangerChef()
Questions :
2.1
Create type Chef_t as Object(
nas int,
anServ int )
/
Create type SiteChantier_t as Object(
noSC int,
villeSC varchar2(50),
leChefDirige REF chef_t,
leChefSuper REF chef_t ) /
2.2
Les contraintes se définissent que sur les tables.
Create table Chef of chef_t (
Constraint pk_nas Primary Key (nas),
Constraint c_nas check(nas>80 AND nasC<99),
Constraint c1_nas check (nas IS NOT NULL) )
Create table SiteChantier of siteChantier_t (
Constraint pk_noSC Primary Key (noSC),
Constraint c1_noSC check (noSC>100 AND noSC<999),
Constraint c2_noSC check (noSC IS NOT NULL)
);
Un attribut de référence doit être non null et tandis que l’autre peut-être null.
Alter table SiteChantier add Constraint c3_leChefDirige Check( leChefDirige IS NOT NULL) ;
2.3
insert into Chef values(chef_t(80,10));
insert into Chef values(chef_t(84,15));
insert into Chef values(chef_t(85,17));
insert into Chef values(chef_t(81,11));
insert into Chef values(chef_t(83,11));
4. Insert into SiteChantier values(SiteChantier_t(200,'Québec', (select REF(x) From Chef x where
x.nas =80), (select REF(x) From Chef x where x.nas = 80)));
Insert into SiteChantier values(SiteChantier_t(206,'Monaco',(select REF(x) From Chef x where
x.nasC=81), (select REF(x) From Chef x where x.nasC=80)));
Insert into SiteChantier values(SiteChantier_t(207,'Rome',(select REF(x) From Chef x where
x.nas=84), (select REF(x) From Chef x where x.nas =84)));
Insert into SiteChantier values(SiteChantier_t(208,'Paris',(select REF(x) From Chef x where
x.nas=83), (select REF(x) From Chef x where x.nas =85)));
2. 4
Pour y arriver, il faut utiliser l’oid du chef dont le nas est connu. Cet oid sera comparé avec l’oid de
la référence leChefDirige de la table SiteChantier.
Etape 3
Le modèle navigationnel partiel correspondant est le suivant :
Le modèle navigationnel comprend un lien interne multiple et son interface composée de signatures.
modifClient() : méthode pour modifier le nom d’un client.
augmente10Capital() : méthode pour augmenter de 10% le capital d’un associé. Cette méthode devra
être appelée par un objet-colonne.
Questions :
3.1
Comme le stipule le scénario, lorsqu’un Client-promoteur cesse ses activités alors le lien avec ses
associes disparaît automatiquement. En implantant la composition avec une classe interne, en
supprimant un objet Client-Promoteur, ses associés sont aussi supprimés sans autres opérations.
3.2
Create or replace Type associe_t as Object (noAs int, nomAs varchar2(30), capit int)
/
Create OR Replace Type lesAssocies_t AS TABLE OF associe_t
/
Create Type clientPromo_t as Object (matC int, nomC varchar2(30), adrC varchar2(30),
5. lesAssocies lesAssocies_t)
/
La contrainte se définit au niveau de la table, et ici au niveau de la table imbriquée, APRES la
création de la table contenante.
Create Table ClientPromo of clientPromo_t (
Constraint pk_clientPromo Primary Key (matC),
Constraint c_matC Check (matC >=10000 AND matC <=10500))
NESTED TABLE lesAssocies STORE AS TablelesAssocies;
Les contraintes sur les attributs de l’objet-colonne ou de la table imbriquée s’appliquent sur la
table physique créée pour stocker les objets de la table imbriquée.
Dans ce cas-ci la table physique est connue car elle a été nommée par la création de la table
principale : TablelesAssocies
Alter Table TablelesAssocies ADD Constraint c1_noAs Check(noAs>=5000 AND noAs<=6000) ;
Alter Table TablelesAssocies ADD Constraint c2_capit Check(capit <=1000000) ;
3.3
Alter type clientPromo_t ADD Member Procedure modifNomClient Cascade ;
Alter type clientPromo_t ADD Member Procedure augmente10Capital () Cascade ;
3.4
Create OR Replace Type Body ClientPromo_t AS
MEMBER Procedure modifNomClient
IS
clientP clientPromo_t ;
BEGIN
/* Select value(cp) into clientP from ClientPromo Where matC = self.matC ;
clientP.nomC := self.nomC ; */
Update ClientPromo cp set cp.nomC = self.nomC Where cp.matC = self.matC ;
end;
/
3.5
Insert into ClientPromo values (clientPromo_t(10034, 'Etienne','Ste-Foy', lesAssocies_t (
associe_t (5002,'Kerris', 110000),
associe_t(5003,'Ana', 120000),
associe_t(5003,'Pierre', 830000)
)));
Etape 4
6. Questions :
4.1
La classe abstraite <<Projet>> permet l’héritage des attributs et des signatures. Elle ne peut pas
être instanciée (NOT INSTANTIABLE) mais elle est spécialisée (NOT FINAL). Il ne pourra donc pas
y avoir d’objet du type projet_t.
Pour valider le disjoint, il faut vérifier que tout projet peut-être soit dans une ou l’autre des tables
mais pas dans les deux. La somme des objets dans les deux tables correspond à la somme des
projets.
4.2
Les types :
Create type Projet_t as Object (noP int, livraisonP Date, totalBudgetP real, margeP real)
NOT INSTANTIABLE NOT FINAL
/
Create type compteBanque_t as Object (
noCB int,
soldeCB real,
dateOuvCB Date,
dateFinCB Date) FINAL INSTANTIABLE
/
Create or replace type projetCourant_t UNDER projet_t (
stDepensePC real,
cumulPayePC real,
margeDispPC real,
refCB REF compteBanque_t
) INSTANTIABLE FINAL
7. /
Create type ProjetTermine_t UNDER projet_t (
totalDepensesPT Real
) INSTANTIABLE FINAL
/
Create or Replace type Proprio_t as Object (
refClient REF clientPromo_t,
refProjet REF projetTermine_t) INSTANTIABLE FINAL
/
Le type ClientPromo_t est déjà créé et présent dans le dictionnaire du SGBD.
Les tables-objets :
Il y a 4 tables à créer : ProjetCourant, ProjetTermine, CompteBanque et Proprio.
Create table ProjetCourant of projetCourant_t ( Constraint
pk_ProjetCourant Primary Key (noP), Constraint
c1_noP check (noP>=1000 AND noP<=4999), Constraint
c2_noP check (noP IS NOT NULL)
);
Create table ProjetTermine of projetTermine_t ( Constraint
pk_projetTermine Primary Key (noP), Constraint
c3_noP check(noP>=1000 AND noP<=4999), Constraint
c4_noP check (noP IS NOT NULL)
);
Create table CompteBanque of compteBanque_t (
Constraint pk_CompteBanque Primary Key (noCB),
Constraint c1_noCB check (noCB>=10000 AND noCB <=15000),
Constraint c2_noCB check (noCB IS NOT NULL)
);
Create table Proprio of proprio_t ;
Aucune clé primaire n’est déclarée pour la table Proprio bien que pour chaque objet Proprio soit
distinct lorsqu’il y une valeur combinée de deux oids. En l’absence d’un oid sur ProjetTerminé, les
2 attributs ne peuvent pas jouer le rôle de clé.
4.3
En surchargeant ce constructeur, tout clientPromo créé avec ce constructeur ne pourra jamais
avoir d’associés. Si cela change par la suite, la mise ne sera pas possible autrement qu’en
recréant cet objet avec son constructeur implicite autorisant les associés.
ALTER TYPE clientPromo_t ADD
CONSTRUCTOR FUNCTION clientPromo_t (mat IN int, nom IN varchar2, adress IN varchar2)
RETURN SELF AS RESULT;
/
8. CREATE OR REPLACE TYPE BODY clientPromo_t AS
CONSTRUCTOR FUNCTION clientPromo_t (mat IN int, nom IN varchar2, adress IN varchar2)
RETURN SELF AS RESULT
IS
BEGIN
SELF.matC := mat;
SELF.nomC := nom ;
SELF.adrC := adres ;
Self.lesAssocies := null ;
RETURN;
END;
END;
/
4.4
Alter type projetCourant_t ADD
MEMBER procedure Ajout CASCADE ;
4.5
Create or Replace type body projetCourant_t AS
MEMBER procedure Ajout (no int, livraison Date, totalBudg real)
IS
BEGIN
Self.noP := no ;
Self.livraisonP := livraison ;
Self.totalBudgetP := totalBudg ;
Self.margeP := totalBudg /10 ;
Self.stDepensePC := 0 ;
Self.cumulPayePC := 0 ;
Self.margeDispPC := totalBud /10 ;
Self.refCB := null ;
Insert into ProjetCourant values(self) ;
END ;
END ;
/