dÉveloppement de logiciels d’entreprises ii · 2020-04-21 · git - systÈme distribuÉ créé...

99
DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II COURS 01

Upload: others

Post on 11-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES IICOURS 01

Page 2: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PLAN▸ Présentation

▸ Plan de cours et méthodologie

▸ Introduction à Git

▸ Introduction à Swift

▸ Accueil des 1ère année: 3 septembre, 12h30 à 18h30

Page 3: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Présentation

Page 4: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PRÉSENTATION▸ James Hoffman 💻 📚 🏃 🎮 🏍 🏕 👷

▸ Discord ou [email protected]

▸ Bureau: 1131A

▸ Ressources du cours: https://jh.shawinigan.info

▸ À votre tour! 🙂

▸ Qui était en stage?

▸ Qu’est-ce qui a occupé votre été?

Page 5: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Plan de cours

Page 6: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PLAN DE COURS▸ 420-B7B-SW

▸ https://jh.shawinigan.info/sessions/2019A/B7B/420-B7B-SW.pdf

▸ Pondération 2 - 3 - 2

▸ Complément de formation en programmation qui vise à assurer le développement et la mise en œuvre d’une application à partir d’un devis client en exploitant la technologie des bases de données relationnelles.

▸ Analyse et planification → Prototypage → Code → Documentation → Livraison

2h Théorie 3h Lab/Pratique 2h À la maison

Page 7: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

COMPÉTENCES▸ Concevoir et développer une application dans un environnement de base de

données

▸ Analyse d’un devis

▸ Programmation

▸ Interaction avec une base de données relationnel

▸ Produire une interface utilisateur

▸ Prototypage

▸ Implémentation de l’interface et de l’expérience utilisateur

Page 8: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

APPRENTISSAGES ET CONTENUS ESSENTIELS

Page 9: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉVALUATIONS

Page 10: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

VARIA▸ Tout retard à la remise d’un travail entraîne une pénalité de 10% par jour de

retard à partir de la date de remise.

▸ Les présences seront prises au début de chaque cours.

▸ Vous êtes responsable de votre réussite, je suis là pour vous guider et vous aider dans votre apprentissage.

▸ Matériel requis

▸ Écouteurs

Page 11: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Git

Page 12: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SYSTÈME DE CONTRÔLE DE VERSIONS - VCS▸ Logiciel permettant de faire le suivi des changements apportés aux fichiers

ajoutés au système. Bien que ce type de mécanisme puisse être utilisé dans différents contextes, l’emploi le plus commun est au niveau du développement logiciel.

▸ Il est donc possible de garder une trace de tous les changements apporté à chacun des fichiers et d’en naviguer l’historique:

▸ Quoi, Qui, Quand, Pourquoi

▸ SVN, Git, SourceSafe, Perforce, etc…

Page 13: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

CENTRALISÉ VS. DISTRIBUÉ

Page 14: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

CENTRALISÉ VS. DISTRIBUÉ▸ Centralisé

▸ La copie de travail plus petite car elle ne contient qu’une version

▸ L’interaction avec le serveur, surtout le téléchargement initial, est plus rapide car on ne télécharge pas l’ensemble des versions

▸ Distribué

▸ Les actions effectués sur la copie de travail sont très rapides

▸ On peut organiser un suivi des changements localement, sans les publier au serveur ▸ Travail en mode hors-connexion

▸ Flexibilité au niveau de l’organisation et partage des versions

Page 15: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - SYSTÈME DISTRIBUÉ▸ Créé en 2005, par Linus Torvalds

▸ Open source et multi-plateformes

▸ Actuellement en version 2.X ▸ git-lfs: large file storage

▸ Git est un outils en ligne de commande, mais il existe plusieurs interfaces graphiques permettant d’y accéder

▸ Permets une gestion des conflits(modifications concurrentes) en évitant la perte des données

▸ Il existe des hébergeurs git: GitHub, BitBucket, GitLab, etc.

▸ Standard de l’industrie

Page 16: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - STATUS

Le mécanisme .gitignore permets d’informer git de ne pas se préoccuper de certains fichiers

Page 17: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - INTERACTIONS

Page 18: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - BRANCHES▸ Permets d’isoler un groupe de changements

▸ On peut ensuite le fusionner avec l’historique principal

▸ Particulièrement utile en travail collaboratif

Page 19: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - FUSION DES BRANCHES

Page 20: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - USAGE▸ Commits fréquents, petite unité fonctionnelle

▸ Ne JAMAIS commit du code non-fonctionnel

▸ Pull régulièrement

▸ Push régulièrement

▸ Gérer les conflits localement: Commit, Pull, Push

▸ Utiliser les branches abondamment(surtout en travail collaboratif): feature-x, test-y

▸ Exploitez le mécanisme de .gitignore judicieusement

▸ https://www.git-tower.com/learn/git/ebook/en/command-line/appendix/best-practices

▸ Usage collaboratifhttps://www.atlassian.com/git/tutorials/comparing-workflows

Page 21: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

GIT - COMMANDES DE BASE▸ git clone URL

▸ git add FICHIER FICHIER2

▸ git add -A

▸ git commit -m “message”

▸ git push

▸ git pull

▸ Si conflit, résoudre le conflit puis add et commit les fichiers

▸ git status

Page 22: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ATELIER▸ Créer un compte Bitbucket avec votre adresse cshawi

https://bitbucket.org/account/signup/

▸ Puis, faire la demande académique https://www.atlassian.com/software/views/bitbucket-academic-license.jsp

▸ https://jh.shawinigan.info/sessions/2019A/B7B/C01/atelier-git.txt

Page 23: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ALLER PLUS LOIN▸ https://learngitbranching.js.org/

▸ https://www.katacoda.com/courses/git

▸ Scénarios 1 à 7

Page 24: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

RÉFÉRENCES▸ https://www.atlassian.com/git

▸ https://www.git-tower.com/learn/git/ebook/en/command-line/basics/what-is-version-control#start

▸ https://git-scm.com/docs/gittutorial

▸ Documentationhttps://git-scm.com/doc

Page 25: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Xcode / Playground

Page 26: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

XCODE▸ IDE produit par Apple ▸ Supporte :

▸ Plateformes Apple

▸ C, C++, Obj-C, Swift et plus après les configurations nécessaires

Page 27: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PLAYGROUND▸ Environnement de programmation de type “bac à sable”

▸ Permet de faire des preuves de concept ou des tests dans un environnement minimal fonctionnel

Navigation

Hiérarchie du projet

Éditeur de code

Évaluateur de code

Options d’affichage

Inspecteur de propriétés

Page 28: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Swift

Page 29: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT▸ Langage de choix pour les plateformes d’Apple

▸ Orienté-objet

▸ Fonctionnel

▸ Orienté-protocole

▸ Introduit en 2014, en constante évolution depuis…

▸ Actuellement en version 5

▸ Guide du langagehttps://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

Page 30: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

TYPES DE DONNÉES▸ Int, Float, Double

▸ Bool

▸ String

▸ Tuples, http404Error = (404, "Not Found”, …)

▸ Array, Set, Dictionary: https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html

Page 31: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Commentaires// Une ligne/*Plusieurs lignes*/

Page 32: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

VAR VS. LET▸ var

permet de créer une variable, donc sa valeur pourra être modifiée par la suite

▸ letpermet de créer un constante, sa valeur ne pourra être modifiée par la suitePour les objets, la référence est constante, les membres peuvent être modifiés

▸ identificateur nomVariable: Type = ValeurInitialevar age: Int = 23 let KEY: String = “my_constant_key”

Page 33: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

AFFICHAGE EN CONSOLE▸ print()

Affiche une String avec un saut de ligne

▸ Inférence de StringSwift peut déduire la représentation en String de plusieurs types de données

▸ Exemplelet age: Int = 23let s: String = “My age is \(age)” print(s)—> My age is 23ouprint(“My age is \(age)”)—> My age is 23

Page 34: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS… ?▸ Ajoute une information supplémentaire concernant le type de données de la

variable

▸ On l’utilise dans un contexte où l’absence de valeur est possible, ?

▸ L’optionalité indique 2 états possibles :

▸ Il n’y a aucune valeur, nil

▸ Il y a une valeur accessible, elle peut être récupérée, unwrap !

Page 35: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS▸ Exemple 1

▸ var errorMessage: String? = nillet s1: String = errorMessage //invalidelet s2: String? = errorMessage //OKerrorMessage = “invalid password”let s3: String = errorMessage! //OK let s4: String? = errorMessage! //OK errorMessage = nil let s3: String = errorMessage! //plante car errorMessage = nil, on ne peut unwrap (!)let s4: String? = errorMessage! //plante car errorMessage = nil, on ne peut unwrap (!)

Page 36: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS▸ Exemple 2

▸ var errorMessage: String? = nil if let message = errorMessage { //message != nil} else { //message == nil}

Page 37: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS▸ Exemple 3

▸ var errorMessage: String? = “invalid password”if let message = errorMessage { //message != nil //message est de type String, non-optionel, il a été unwrap} else { //message == nil}

▸ L’équivalent est: if (errorMessage != nil) { message = errorMessage! //message est de type String, non-optionel}

Page 38: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS▸ Exemple 4

Page 39: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

OPTIONALS▸ Exemple 5

Page 40: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

FONCTIONS‣ func functionName(paramLabel paramName: Type, …)-> TypeDeRetour {

//code… }func doSomething() { // code… }func add(value num1: Int, to num2: Int)-> Int { return num1 + num2}

Pas de type de retour, donc ne retourne pas de valeur

let result = add(value: 2, to: 4)

Page 41: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

FONCTIONS

Page 42: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

FONCTIONS ET OPTIONALS

Page 43: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Collections

var crée une collection mutable, qu’on peut modifier let crée une collection immutable, qu’on NE peut modifier

Page 44: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Array

▸ Initialisationvar numbers: [Int] = [] , array videvar numbers: [Int] = [2, 4, 6] , valeurs littérales var varName: [Type] = [ValeursInitiales]

Page 45: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Insertion d’items

Page 46: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Récupération d’un item

▸ Modification d’un item

Page 47: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Suppression d’items

Page 48: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Array

▸ isEmpty

▸ count

Page 49: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, SUITE▸ Parcourir une array

Par valeur Énumérée

Page 50: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SWIFT, RANGE▸ Boucle for et les Range

▸ On peut définir un intervalle d’entiers à parcourir par pas de 1 avec une boucle for à l’aide des opérateurs … et ..<

▸ On utilise la logique d’un foreach en parcourant chaque item de l’interval

Page 51: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

POO en Swift

Page 52: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROGRAMMATION ORIENTÉE-OBJET▸ Swift supporte les mécanismes de classe, structures et protocoles (interfaces)

▸ Héritage

▸ Polymorphisme

▸ On définit les variables membres et les méthodes d’une classe avec la syntaxe vue précédemment

▸ L’encapsulation est possible grâce au modificateurs d’accès

Page 53: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

DÉCLARATION D’UNE CLASSE▸ Syntaxe semblable à Java

▸ class

▸ self plutôt que this

▸ Variables et méthodes à l’intérieur des accolades

▸ Modificateurs d’accès

▸ Les variables doivent absolument être initialisées (init ou à la déclaration)

Page 54: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

INSTANCIATION ET UTILISATION▸ Avec let ou var

▸ PAS de new

▸ On utilise le point . pour intéragir avec l’instance

Page 55: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROPRIÉTÉS▸ Les variables membres d’une classe sont en fait des propriétés stockées

(stored property)

▸ Il est possible de définir des propriétés calculées (computed property) qui retourne un valeur ne provenant pas directement d’un variable membre

▸ On peut également observer les changements(property observer) apportés à une propriété et effectuer un traitement lorsque cela se produit

▸ L’héritage et la surcharge peuvent être utilisés avec les propriétés calculées

Page 56: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROPRIÉTÉS, EXEMPLES

Page 57: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

MODIFICATEURS D’ACCÈS

https://swiftbits.redalemeden.com/images/access-control-swift3.svg

open > public > internal > fileprivate > private

Page 58: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

MEMBRES STATIC VS CLASS▸ static

On NE peut PAS le surcharger

▸ classIl est possible de le surcharger

Page 59: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

HÉRITAGE▸ On peut utiliser le mécanisme d’héritage pour réutiliser ou étendre les

propriétés(données) et les méthodes(comportement) d’une autre classe.

▸ On peut surcharger des méthodes pour modifier le comportement de la classe parent.

▸ Il est également possible d’ajouter des observateurs de propriétés sur les propriétés d’une classe parent.

▸ On ne peut avoir qu’UNE SEULE classe parent.

▸ Le constructeur est une fonction portant le nom de init

Page 60: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

HÉRITAGE▸ Pour signifier l’héritage d’une classe on utilise l’opérateur : dans la déclaration

de la classe

Page 61: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

HÉRITAGE▸ Les modificateurs d’accès sont utilisés

pour contrôler la visibilité des membres d’une classe.

▸ On initialise d’abord ses propriétés avant d’appeler le constructeur de sa classe parent, super.init()

Page 62: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SURCHARGE - OVERRIDE▸ L’utilisation du mot-clé override indique au compilateur Swift qu’on souhaite surcharger

un membre(propriété ou méthode). Swift vérifie donc que le membre surchargé existe vraiment dans la classe parent. On peut accéder au membre du parent avec le mot-clé super. On peut restreindre la surcharge avec l’attribut final.

▸ On peut surcharger:

▸ Méthodes

▸ Propriétés

▸ ajout d’observateurs pour les propriétés disponible en écriture On ne peut observer les changement de valeur d’une variable read-only

Page 63: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SURCHARGE DE MÉTHODE

Page 64: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

INITIALISATION▸ La méthode init(initializer) est réservée à l’initialisation(la préparation) des propriétés

d’une classe, structure ou enum.

▸ Implicitement, Swift fourni un un initializer vide par défaut

▸ Toutes les propriétés stockées doivent être initialisée avec une valeur initiale.On peut assigner cette valeur à la déclaration de la propriété OU dans la méthode init. ▸ L’exception à cette règle est une propriété donc le type est optionnel.

Elle possède implicitement une valeur par défaut à nil. On peut évidemment décider de lui assigner une valeur différente quand même.

▸ On peut également déclarer un membre constant(let) et par la suite lui assigner une valeur dans le init.

Page 65: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

INITIALISATION▸ On peut réutiliser un initializer désigné (designated initializer) de notre classe à

partir d’un initializer de convenience (self.init). Le mot-clé convenience indique que cet init est un raccourci et qu’il appelera éventuellement un autre init.

Page 66: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

LES 3 RÈGLES DE L’INITIALISATION▸ Règle 1

Un init désigné doit appeler un init désigné de sa classe parent(si elle existe) init —> super.init

▸ Règle 2Un init de convenience doit appeler un init quelconque de sa propre classe convenience init —> init(désigné ou convenience)

▸ Règle 3Un init de convenience doit ultimement appeler un init désigné convenience init —> convenience init —> convenience init —> init

Page 67: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

LES 3 RÈGLES DE L’INITIALISATION▸ En résumé

▸ Un init désigné délégue verticalement vers son parent

▸ Un init de convenience délègue horizontalement aux autres init de sa classe

Page 68: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

INITIALISATION - EXEMPLE

Page 69: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SURCHARGE DU INIT▸ Un init est une méthode de la classe et peut donc être surchargée par les sous-

classes.

▸ Seuls les init désignés peuvent être surchargés, un init de convenience du parent sera tout simplement masqué s’il est redéclaré par une sous-classe

Page 70: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SURCHARGE DU INIT - EXEMPLES

Page 71: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

SURCHARGE DU INIT - EXEMPLES

Page 72: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

AUTRES PROPRIÉTÉS DES INITIALISEURS▸ Il est possible de spécifier qu’un initialiseurs peut échouer(failable initializers)

en ajoutant l’information d’optionalité( ? ) à la déclaration de celui-ci. On peut alors retourner nil si l’initialisation est invalide.

Page 73: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

DÉINITILISATION - DEINIT▸ Swift se charge d’appeler une méthode de déinitialisation (deinit) lorsqu’il

libère une instance d’une classe de la mémoire.

▸ Il est alors possible de nettoyer les ressources utilisées

▸ Une classe peut définir UN SEUL deinit et cette méthode n’a aucun paramètre, on l’écrit même sans parenthèses

Page 74: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

STRUCTURE▸ struct ▸ Ressemble à une classe ▸ Propriétés ▸ Méthodes ▸ init ▸ Peut se conformer à un protocole

▸ Différences ▸ Pas d’héritage ▸ Pas de références(value type), les instances sont toujours copiées ▸ pas de deinit

Page 75: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

STRUCTURE VS. CLASSE▸ On privilégie une struct si:

▸ But premier est d’encapsuler des données

▸ Contexte où il est logique que les données soit copiées lorsque l’instance est assignée et utilisée

▸ Les données contenues sont de type valeur(value type) également

▸ Le contexte ne nécessite pas de hiérarchie d’héritage

▸ Ex: Point, Size, etc.

▸ Sinon, on utilise une classe

Page 76: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

STRUCTURE - EXEMPLES▸ Définition et instanciation

Page 77: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

STRUCTURE - EXEMPLES▸ let vs. var

Page 78: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

STRUCTURE - EXEMPLES▸ Les struct sont des type valeurs(value type)

Page 79: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

VAR VS LET - PARTICULARITÉS

Page 80: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉNUMÉRATIONS▸ Permet d’énumérer un ensemble de valeurs(case) ayant un lien logique entre elles

▸ On peut ensuite les utiliser d’une manière sécuritaire(type safe)

▸ Un case peut posséder une valeur brute(raw value) de type: Int, String, Character ou Float

▸ On peut associer à un case une ou plusieurs valeurs de type arbitraire: Int, String, Objet.

▸ Une énumération peut : ▸ définir des propriétés calculées ▸ être initialisée, init ▸ se conformer à un protocole

Page 81: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉNUMÉRATIONS▸ On définit les case avec une lettre minuscule

▸ On peut valider la valeur d’une enum avec un switch ou un if

Page 82: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉNUMÉRATION▸ On peut définir une valeur associée de type arbitraire

▸ On y accède via le switch

Page 83: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉNUMÉRATION▸ On peut définir différents initialiseurs pour l’enum, avec ou sans paramètres ▸ Si notre enum possède une valeur brute, elle a une initialiseur par défaut

permettant de créer une instance possédant cette valeur si elle existe, sinon nil

Page 84: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

ÉNUMÉRATION - EXEMPLE

Page 85: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROTOCOLES▸ Les protocoles définissent un contrat au niveau du comportement (méthodes)

et des données (propriétés) qu’un élément (classe, struct ou enum) peut adopter, donc on dit qu’il se conforme au protocole.On peut se conformer à plusieurs protocoles.

▸ Un protocole en Swift offre la flexibilité combinée des classes abstraites ET des interfaces traditionnelles existant en Java, par exemple.

▸ On adopte un protocole avec l’opérateur : en spécifiant la super classe avant les protocoles auxquels on se conforme

Page 86: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROTOCOLES - PROPRIÉTÉS▸ Un protocol peut spécifier des propriétés qui devront être déclarés par

l’élément qui l’adopte. On déclare les propriétés avec la même syntaxe que pour les classes.

▸ On peut spécifier si la propriété doit être au minimum disponible en lecture seule ou en lecture-écriture

Page 87: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROTOCOLES - MÉTHODES▸ Le principe est le même au niveau des méthodes. On déclare les méthodes

dans le protocole en respectant la syntaxe vue précédemment (en omettant les { } ) et les éléments qui s’y conforme devront les implémenter.

Page 88: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

PROTOCOLES - HÉRITAGE▸ Un protocole peut hériter d’un ou plusieurs autres protocoles

▸ L’élément qui s’y conformera devra donc respecter l’ensemble des indications de la hiérarchie de protocoles

Page 89: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

EXTENSIONS▸ Permet d’ajouter(étendre) les données ou le comportement d’un élément

existant (classe, struct, enum, protocole) de façon horizontale

▸ Ne peut modifier le comportement existant, PAS DE SURCHARGE

▸ Peut ajouter:

▸ Propriétés calculées

▸ Méthodes

▸ Nouveaux init

▸ Définir des nouveaux types imbriqués

▸ Rendre un type existant conforme à un protocole

Page 90: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

EXTENSIONS

Page 91: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

EXTENSIONS - EXEMPLE

Page 92: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

FONCTIONS ENCAPSULÉES - CLOSURES▸ Une closure est une fonction qui est stockée dans une variable

▸ Elle peut être utilisée et passée en paramètre comme n’importe quelle variable

▸ Elle a l’avantage de capturer(se souvenir, connaître) le contexte où elle est déclarée

Page 93: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

CLOSURES - EXEMPLE

Page 94: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

CLOSURES - EXEMPLE 2

Page 95: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

Exercices

Page 96: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

REPL.IT▸ https://repl.it

Page 97: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

EXERCICE - LES FORMES

Page 98: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

EXERCICE - LES FORMES : TESTEZ VOTRE PROGRAMME

▸ Ajoutez des fonctionnalités(draw, move, etc.) et explorez le langage Swift ▸ Explications https://youtu.be/SrBM7O6wiAI

Page 99: DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES II · 2020-04-21 · GIT - SYSTÈME DISTRIBUÉ Créé en 2005, par Linus Torvalds Open source et multi-plateformes Actuellement en version

RESSOURCES▸ https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

▸ https://codewithchris.com/swift-tutorial-complete