Programmation orientée objet et événementielle

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

Premier programme en C :
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Introduction au langage C
C++ 6ème cours Patrick Reuter maître de conférences
Introduction à l’Algorithmique
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
la programmation en langage C
C.
Programmer en JAVA par Tama
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
IJA - TD 2 Bases du langage
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Principes de programmation (suite)
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les éléments de base de l’algorithmique
Langage Oriente Objet Cours 4.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Base de programmation Script unity en c#.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
L’essentiel du langage C
2.1 - Historique Chapitre 2 : Introduction au langage C++
Objectifs À la fin de ce cours, vous serez capables de :
JavaScript Nécessaire Web.
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Sous-programmes.
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
La notion de type revisitée en POO
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Créer des packages.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
Tutorat en bio-informatique
Module I3 algorithmique et programmation
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les surcharges d'opérateurs
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Les bases de l’algorithmique
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
PRO-1027 Programmation Scientifique en C
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Initiation aux bases de données et à la programmation événementielle
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

Programmation orientée objet et événementielle David Vanderhaeghe david.vanderhaeghe@labri.fr

Qu'est ce qu'un ordinateur ?

Introduction / rappel Les ordinateurs ordinent Et c'est tout ! Le reste c'est l'interprétation et le matériel autour La programmation nourri l'ordinateur Pour que l'humain lui donne à ordiner

Fonctionnement d'un ordinateur Un (des) cpu (gpus) De la mémoire (registre, cache, vive, de masse …) De composant autour qui interprètent les données et effectue des actions Pleins de conventions pour s'y retrouver

La mémoire Le CPU déplace des valeurs en mémoire Fait de calculs sur ces valeurs (+ - * / & | ! ^ …) Mets le résultat dans la mémoire à une certaine adresse Un ordinateur applique des fonction sur des données (variables)

asm.developpez.com/intro/ Deux mots d'assembleur Spécifique à un type de CPU Permet le contrôle de bas niveaux Commande directement ce que sait faire le CPU Inutilisable ;) mov ax,0A000h mov es,ax xor edi, edi db 66h; xor di,di mov al,[coul] mov ah, al mov bx, ax asm.developpez.com/intro/

Langages de programmation

Langages de programmation %PDF-1.3 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 3 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 5 0 R /Resources << /ProcSet 6 0 R /Font << /F1 7 0 R >> 5 0 obj << /Length 73 >> stream BT /F1 24 Tf 100 100 Td (Hello World) Tj ET endstream 6 0 obj [/PDF /Text] 7 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /MacRomanEncoding xref 0 8 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000179 00000 n 0000000364 00000 n 0000000466 00000 n 0000000496 00000 n trailer << /Size 8 /Root 1 0 R startxref 625 %%EOF ++++++++++[>+++++++>++++++++++>+++> +<<<<-]>++.>+.+++++++..+++.>++.<<++++++ +++++++++.>.+++.------.--------.>+.>. #include <stdio.h> int main(void) { printf("Hello world!\n"); return 0; } #include <unistd.h> int main(void) { write(1, "Hello world!\n", 13); return 0; } fr.wikipedia.org/wiki/Hello_world

Langages et applications Langage compilé Transformé en code machine par le compilateur Produit un exécutable, dépendant de l'architecture Compilé une fois puis diffusé Langage interprété Code est interprété au moment de l'exécution Code est directement diffusé

Langage compilé Le programme peut être très performant La compilation peut prendre le temps De vérifier D'optimiser Modification du code → recompiler

Langage interprété Prend plus de temps à l'exécution Doit être « compilé à la volée » Flexibilité de changement du code Langage de script (bash, python …) Indépendant de la cible Du moment que l'interpréteur existe La distribution se fait en donnant le code Problème de protection du code

Java : entre deux Code compilé pour une machine virtuelle Le résultat de la compilation est interprété par une machine virtuelle Proche d'un CPU standard Surcoût en temps d'exécution faible Une seule compilation pour toutes les architecture Une machine virtuelle pour CHAQUE architecture

Internet et réseaux Transfert de données entre ordinateur Architectures différentes Systèmes d'exploitation variés Mode de transmissions hétérogènes

Type de programmation

Programmation procédurale Permet de décrire des procédures Décrites par les opérations simples Et l'appel d'autres procédures Le programme principal appel les procédures

Programmation fonctionnelle Décrit l'application de fonction "comme en math" Pas de changement d'état ni de mutation de donnée Permet de décrire simplement un programme compliqué Récursion Fonction en paramètre ...

Programmation impérative Décrit une séquence d'opérations Recette de cuisine Chaque opération peut modifier l'état du programme Affectation Branchement Boucle

Et bien d'autres encore Extrait de http://people.ku.edu/~nkinners/LangList/Extras/classif.htm Procedural Language : A language which states how to compute the result of a given problem. This term encompasses both imperative and functional languages. Imperative Language : A language which operates by a sequence of commands that change the value of data elements. Imperative languages are typified by assignments and iteration. Declarative Language :A language which operates by making descriptive statements about data, and relations between data. The algorithm is hidden in the semantics of the language. This category encompasses both applicative and logic languages. Examples of declarative features are set comprehensions and pattern-matching statements. Applicative Language : A language that operates by application of functions to values, with no side effects. A functional language in the broad sense. Functional Language : In the narrow sense, a functional language is one that operates by use of higher-order functions, building operators that manipulate functions directly without ever appearing to manipulate data. Example: FP. Definitional Language : An applicative language containing assignments interpreted as definitions. Example: Lucid. Single Assignment Language :An applicative language using assignments, with the convention that a variable may appear on the left side of an assignment only once within the portion of the program in which it is active. Dataflow Language :A language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and the equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid. Logic Language :A logic language deals with predicates or relationships p(X,Y).

Programmation orienté objet Procédures + données = unité (encapsulation) Décrite dans une classe Sous forme de méthodes Et de données membres Instancié par la création d'objet D'une certaine classe La communication entre objet se fait par messages Un objet peut appeler une méthode d'un autre objet

Exemple Fenêtre Rectangle Affiche position titre couleur position taille couleur

Pour pouvoir programmer en Java

Syntaxe Programme composé d'instruction Une instruction ensemble de mots et se termine par ; x*2+4; Les commentaires sont délimités par /* commentaire sur une ou plusieurs ligne */ // jusqu'à la fin de la ligne /** commentaire de documentation */

Types et déclarations de variables int x; float y; double z; String s("une chaine de caractères");

Les différents type en Java Taille Description Entier byte 8 bit Entier octet short 16 bit Entier court int 32 bit long 64 bit Entier long Réel float réel précision simple double réel précision double Autre char un caractère Unicode boolean true ou false valeur booléen

Les classes Une variable de type classe est une référence Il faut avoir déclarer la classe Classe que vous créer Classe fournie par une Librairie class NomDeLaClasse { // declaration de variables membres int x; float valeurReel; // declaration/definition de méthode public void uneMethode(int param){ // variables locales int t = param; x = param+t; }

Les classes Ensuite pour déclarer une instance Et pour le définir NomDeLaClasse nomDeLObject; Et pour le définir nomDeLObject = new NomDeLaClasse(); Ceci définit la référence déclarer Généralement une class dans un fichier .java La fichier porte le nom de la class

Nom de variables Suite de caractères "unique" Pas un mot clé du langage byte, short, int, long, float, char, boolean, class for, while, continue, switch, case, break, default extends, implements, void , static, pulic, private … Par convention Nom de classe commence par majuscule Nom de variables commence par minuscule

Affectation et appel de fonction int x = 3; int y = 4; int z = x+y; int valeur = fonction( x, y, z ); int valeur = objet.methode( x, y, z );

Les opérateurs Opérateur sur les nombres Unaire Binaire + variable op1 + op2; op1 – op2; op1 * op2; op1 / op2; op1 % op2

Opérateur bit à bit Décalage Logique op1 >> op2 op1 << op2

Opérateur logique et comparaison Sur les booléen op1 && op2 op1 & op2 op1 || op2 op1 | op2 !op expression ? op1 : op2 op1 > op2; ou < >= <= == != op1 instanceof op2 (entre objet et classe)

Un peu de pratique Hello World en java Définir une classe class HelloWorld { }

Un peu de pratique Déclarer/Définir une méthode class HelloWorld { void printMessage(){ System.out.println("Hello World");  }

Un peu de pratique Déclarer/Définir une méthode appel méthode System class HelloWorld { void printMessage(){ System.out.println("Hello World");  }

Un peu de pratique Déclarer/Définir une méthode méthode main class HelloWorld { void printMessage(){ System.out.println("Hello World");  } static void main(Strings [] args){

Un peu de pratique Appeler une méthode de la classe class HelloWorld { void printMessage(){ System.out.println("Hello World");  } static void main(Strings [] args){ printMessage();

Un peu de pratique Appeler une méthode de la classe class HelloWorld { void printMessage(){ System.out.println("Hello World");  } static void main(Strings [] args){ printMessage();

Librairies de java Grand nombre de librairies fournie Facilite le développement Les bases pour l'affichage, les interfaces, le réseaux, les bases de données, la gestion de données … Difficile de connaître toutes les classes Ne pas hésiter à chercher dans l'aide en ligne

Eclipse Un programme en java c'est Un fichier texte (source) un compilateur une machine virtuelle

Eclipse Un programme en java c'est Un fichier texte (source) un compilateur une machine virtuelle class HelloWorld { static void main(Strings [] args){ System.out.println("Hello World");  }

Eclipse Environnement de développement Gérer les fichiers Colorer le code Aller aux erreurs de compilation, proposer les corrections Aller aux erreurs d'exécution Remanier le code (envoyer des mails; faire le café ...)

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

Eclipse

A vous maintenant Mais d’abord pause !

Structures de contrôle

Branchement if(true){ if(condition){ Instructions; } else{ Intructions; if(true){ System.out.println(‘’toujours vrai’’); } if(x==0){ System.out.println(‘’x egal 0’’); } if(x==0){ } else if(x==1){ else {

Branchement Pour des variables de type primitif char, byte, short out int switch(variable){ case valeur1: instructions; break; case valeur2: default: }

Boucle for( initialisation; test; incrementation){ Intruction; } for( int i=0; i<10; i++){ System.out.println(‘’Compteur ’’+i); for(float f=2.0; f<10.0; f=f*f){ while(test){ Intruction; } do{ instructions; } while(test);

A vous de jouer Créer une nouvelle classe avec méthode main Pour chaque point suivant, créer une méthode A l’aide d’une boucle for afficher les entiers de 1 à 10 afficher les multiples de 2.53 inférieur à 50 afficher deux nombre, l’un de 0 à 10 et l’autre de 10 à 0 Même chose avec une boucle while et do while Déclarer deux entiers et leur affecter une valeur Afficher un message différent suivant quel entier est supérieur Tester si l’un est multiple de l’autre Imaginer un cas d’utilisation de switch Appeler les méthodes dans main pour tester

Portée des variables Une variables est connue du programme à partir de sa déclaration Jusqu’à la fin du bloc de sa déclaration Deux variables déclarer dans un même bloc doivent avoir de noms différents Une variable dans un sous bloc peut masquer une variable d’un bloc supérieur (si même nom)

Opérateur de conversion Pour convertir un type en un autre float f =10.0; int i = (int)f; float g=(float)i; //facultatif

Tableaux (ou vecteur) Déclaration avec [] Allocation avec initialisation int tab[] = {1,2,3,4}; Allocation avec new int tab[]; tab = new int[10]; tab[0]= 1; double tab[][] = new tab[10][20];

Encore un exercice Créer deux tableaux de 5 entiers (disons t1 et t2) Créer deux tableaux de 5 float (t3 et t4) Créer deux tableaux de 5 double (t5 et t6) Affecter 1000 à la première case des tableaux entier Affecter 1 à la première case des autres tableaux Remplissez t1 tel que t1[i] = 10*t1[i-1]; Remplissez t2 tel que t2[i] = t2[i-1]/10; Remplissez t3 tel que t3[i] = t3[i-1]*10000; Remplissez t4 tel que t4[i] = t4[i-1]/10000; Afficher le contenu des tableaux

Suite de l’exercice Changer la taille des tableaux pour contenir 20 données Que ce passe-t-il ? Essayer aussi avec short et byte Créer un tableau 3 dimension de 10000 double

Programmation orienté objet

Les objets L'encapsulation Héritage Généricité Modularité Sécurité Réutilisation du code Généricité Traitement abstrait de donnée

Héritage Si une classe est presque comme une autre Réutilisation du code Hiérarchisation du code On parle de classe mère et classe fille Les méthodes et données membres sont héritées Cercle -position -centre Rectangle -position -largeur -longeur Forme géométrique affiche

Héritage Penser l’héritage comme une relation est-un Un rectangle est une forme géométrique Tout ce qui est vrai pour une forme géométrique l’est pour un rectangle Tout ce que l’on peut faire avec une forme géométrique, on peut le faire avec un rectangle Une référence d’une classe peut contenir un objet de classe héritée Cela permet le traitement générique des données

En Java Visibilité d’une classe Modificateurs : Modificateurs class NomDeLaClasse [extends ClasseMere] [implements NomInterface] {…} Modificateur Signification abstract Des méthodes sont abstraite : sans définition. La classe ne peux être instancier, elle sert seulement de classe mère. final La classe ne peut servir de classe mère private La classe est locale au fichier ou elle est définie public La classe est accessible partout

En Java extends : spécifie la classe mère Au plus une classe mère Une classe fille peut surchargé (redefinir) un méthode de la classe fille (polymorphisme) implements : définie des interface Une interface est un ensemble de déclaration de méthode Cela permets « l’héritage multiple »

Visibilité des données membres Modificateurs class NomDeLaClasse [extends ClasseMere] [implements NomInterface] { Modificateur type nom; Modificateur typeRetour nom(typeParam1, …); } Modificateur Signification par defaut Visible par toutes les classes du même package public Visible par toutes les autres classes protected Modificateur de méthode : visible par les classes du même package et les classes héritées private Visibles qu’a l’intérieur de la classe static Membre partagé par toutes les instances. Méthode qui n’agit que sur les membres static, pas besoin d’avoir un objet pour l’utiliser. final Le membre ne peut être définie qu’une fois. La méthode ne peut être redefinie

Interface en Java Toutes les méthodes sont implicitement abstraites [public/package] interface NomInterface [extends NomInterface, AutreInterface] { // méthode // champts static } Toutes les méthodes sont implicitement abstraites Les membres sont implicitement static et final Toutes classe qui implemente une interface doit définir les méthodes de l’interface

Exercice Définir une classe People Avec les données membres String name; String firstName; Avec une méthode printInformation qui affiche le nom et le prénom Tester cette méthode en instanciant un objet de type personne Définir une classe Student qui hérite de People Avec un numéro étudiant Redéfinir la méthode printInformation Définir une classe Vehicule Avec un membre People pour le conducteur et un entier pour le kilometrage Définir la méthode printInformation

Exercice suite Utiliser la méthode de People dans Student Pour appeler une méthode de la classe mère on utiliser super.nomDeLaMethode Instancier un People (professeur par exemple) Instancier un étudiant (vous par exemple) Instancier deux véhicules (voitureDeSport et superCinq par exemple) Le conducteur de la superCinq est l’étudiant Le conducteur de la voitureDeSport est le professeur Tester vos instanciations Définisser une interface InformationPrint avec une méthode printInformation Modifier les classes définies pour qu’elle implémente la nouvelle interface Créer un tableau de InformationPrint et affecter à ce tableau les object créés. Appeler la méthode printInformation pour chaque élément du tableau