• Aucun résultat trouvé

Support de cours du langage de programmation Java

N/A
N/A
Protected

Academic year: 2021

Partager "Support de cours du langage de programmation Java"

Copied!
101
0
0

Texte intégral

(1)

HAL Id: hal-02800791

https://hal.inrae.fr/hal-02800791

Submitted on 5 Jun 2020

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de

Support de cours du langage de programmation Java

Alexandre Journaux

To cite this version:

Alexandre Journaux. Support de cours du langage de programmation Java. Langage de programma-tion Java (Initiaprogramma-tion au langage Java), 2014, 100 diapositives. �hal-02800791�

(2)
(3)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(4)

Rapide historique de Java

Dates clés

1990-92 : Langage « Oak » qui s’appuie sur une

machine virtuelle

1993 : Orientation de « Oak » vers une utilisation sur

Internet

1995 : Présentation de Java à SunWorld

Oak est rebaptisé Java

Vif succès : moyen d’animer les pages statiques du web

avec les « applets »

1996 : Netscape Navigator 2 incorpore une machine

virtuelle Java 1.0 en version « beta »

(5)

Rapide historique de Java

Dates clés (suite)

1997 : Un premier pas vers une version industrielle

Java 1.1

1999 : Version industrielle de Java

Aujourd’hui

JDK 1.8 (ou Java 8)

Communauté très active

(6)

Caractéristiques du langage

Orienté objet

Basé sur la notion de classe

Respecte les principes d’abstraction, d’encapsulation et

de polymorphisme

Particularités

Héritage simple, pas d’héritage multiple (évite les pbs de

duplication d’attributs, conflits entre méthode…)

(7)

Caractéristiques du langage

Langage interprété et portable

Interprété : Utilise la machine virtuelle

Aucun code natif généré

La machine virtuelle contient l’interpréteur qui traduit à la

volée le pseudo-code en code natif

Portable

Pseudo-code indépendant de l’architecture matérielle

Prise en charge des aspects spécifiques à chaque

système par les différentes implémentations des JVM

(8)

Java et ses versions

Différentes versions de la machine virtuelle

Java Micro Edition (Java ME) : terminaux portables

Java Standard Edition (Java SE) : postes clients

Java Enterprise Edition (Java EE) : serveur

d’application basé sur la notion de classe

Différentes distributions

SDK (Software Development Kit) fournit un

compilateur et une machine virtuelle

JRE (Java Runtime Environment) fournit

uniquement une machine virtuelle. Idéal pour le

déploiement de vos applications.

(9)

Les ressources sur Java

Site de Java chez Oracle

http://www.oracle.com/technetwork/java/index.html

API (bibliothèque)

http://docs.oracle.com/javase/7/docs/api/

Cours, exemples et Forum

(10)

Les outils

(11)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(12)

public class HelloInra

Nom de la classe

public static void main

La fonction principale équivalent à la fonction main

du C#

String[] args

Permet de récupérer des arguments transmis au

programme au moment de son lancement

System.out.println(« Hello … ")

Méthode d'affichage dans la fenêtre console

(13)

Mise en œuvre

Nom de la classe = Nom du fichier java

Un seul fichier : HelloInra.java

Compilation

javac HelloInra.java ou javac *.java

Génération d’un fichier Byte-Code HelloInra.class

Exécution

java HelloInra

Choisir la classe principale à exécuter

(14)

Syntaxe

Proche du C#

Une instruction se termine par ;

Le bloc d’instructions : délimité par { et }

La condition booléenne : délimitée par ( et )

Les tableaux : notation []

(15)

Les types primitifs

Ne sont pas des objets

Occupent une place fixe en mémoire réservée à la

déclaration

Entiers : byte (1 octet) - short (2 octets) - int (4 octets) –

long (8 octets)

Flottants : float (4 octets) - double (8 octets)

Booléens : boolean (true ou false)

Caractères : char (codage Unicode sur 16 bits)

Chacun des types simples possède un alter-ego objet

disposant de méthodes de conversion

Ex: Integer pour int

(16)

Déclaration et initialisation d’une variable

Constantes

Ce sont des variables dont la valeur ne peut être

affectée qu'une fois

Elles ne peuvent plus être modifiées

Elles sont définies avec le mot clé final

(17)

Syntaxe

Opérateurs arithmétiques

Unaires : -, --, ++

Binaires : +, -, *, /, %

Opérateurs logiques

!, &, |, &&, ||

Opérateurs de comparaison

<, >, <=, >=, ==, !=

(18)

Syntaxe

Les Wrappers

Les types primitifs ne sont pas des objets

Un wrapper est la représentation objet d’une primitive

Boolean, Character, Byte, Short, Integer, Long, Float,

Double

(19)

Syntaxe

Les tableaux

(20)

Syntaxe

La classe String

(21)

Structures de contrôle

La condition

(22)

Structures de contrôle

Le traitement switch-case

(23)

Structures de contrôle

La boucle while et la boucle do-while

Action sur une boucle

break permet de sortir de la boucle

continue permet d’aller directement à l’évaluation

(24)

Travaux pratiques – TP1

Environnement Eclipse

Installation

Organisation de l’environnement et des sources

Créer le programme HelloInra avec paramètre

Le nom est en paramètre

Affiche : Hello Jean (Jean passé en paramètre)

Créer le programme TrieTableau

Tableau d’entier : 4, 1, 7, 3, 2, 9

Trie et Affiche le tableau trié

(25)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(26)

Classe

Définition

Une classe est constituée :

de données qu'on appelle des attributs

de procédures et/ou des fonctions qu'on appelle des

méthodes

Une classe est un modèle de définition pour des objets

Ayant même structure (même ensemble d'attributs)

Ayant même comportement (même méthodes)

Les objets sont des représentations dynamiques de la

classe (instanciation)

Une classe permet d'instancier (créer) plusieurs objets

Chaque objet est instance d'une classe et une seule

(27)

Classe

Déclaration

Le code s’écrit dans un fichier qui porte le même nom

plus l’extension .java

attributs

constructeur

(28)

Classe

Les attributs

Variables globales dans la classe

Les méthodes

Procédures/fonctions qui permettent de manipuler

l’objet

Les paramètres sont passés

Par valeur pour les types primitifs

Par référence pour les objets

Les constructeurs

Méthode d’initialisation qui porte le nom de la classe

Il peut y avoir plusieurs constructeurs pour une classe

(29)

Classe

Contrôle d’accès

Il est possible de préciser l’accès aux classes, attributs,

méthodes et constructeurs:

private : accessible uniquement à l’intérieur de la classe

protected : accessible par les sous-classe

public : accessible par n’importe quelle classe

<aucun> : accessible par toutes les classes du package

de la classe

(30)

Classe

Convention de nommage

Un fichier par classe, une classe par fichier

Classe Animal décrite dans le fichier Animal.java

Il peut exceptionnellement y avoir plusieurs classes par

fichier (cas des Inner classes)

(31)

Objet

Un objet est instance d’une seule classe

Tout objet est manipulé et identifié par sa

référence

Utilisation de pointeur caché

« a = b » signifie a devient identique à b

Les deux objets a et b sont identiques et toute modification de

a entraîne celle de b

« a == b » retourne « true » si les deux objets sont

identiques

C’est-à-dire si les références sont les mêmes, cela ne compare

pas les attributs

(32)

Objet

Manipulation

(33)

Objet

Un attribut peut être une instance d’une autre

classe

(34)

Objet

Gestion des objets

(35)

Objet

Variables de classes (variables statiques)

Ce sont des constantes liées à une classe

Elles sont écrites en MAJUSCULES

déclaration

(36)

Objet

Méthodes de classes (méthodes statiques)

Ce sont des méthodes qui ne s'intéressent pas à un

objet particulier

Utiles pour des calculs intermédiaires internes à une

classe

déclaration

(37)

Les Packages

Un package est un espace de nommage

C’est un regroupement de classes et d’interfaces

logiquement liées

Les noms des packages sont construits en

utilisant une notation pointée

Exemples :

java.lang : rassemble les classes de base Java (Object,

String, …)

java.util : rassemble les classes utilitaires (Collections,

Date, …)

(38)

Les Packages

Visibilité

Par défaut, une classe n’est accessible que par les

classes du même package

Seules les classes déclarés public sont accessibles

(39)

Les Packages

Le nom du package doit apparaitre au début du

fichier source

Le source .java et la classe compilé .class doivent

être dans le répertoire défini par cette règle :

Prendre le nom de package

Remplacer les . par des /

(40)

Les Héritages

Mot clé : extends

Java ne permet que l’héritage simple

(41)

Les Héritages

Accès à la classe parent

Les méthodes de la classe dérivée peuvent accéder

aux attributs public et protected de la classe parent

(42)

Les classes abstraites

Intérêt

On ne connaît pas toujours le comportement par défaut

d’une opération commune à plusieurs sous-classes

Ex : Type de bague d’un animal d’élevage. On sait que

tous les animaux d’élevage sont bagués mais la pose

des bagues est différente d’un animal à un autre

3 règles :

Si une seule des méthodes d’une classe est abstraite,

alors la classe devient aussi abstraite

On ne peut pas instancier une classe abstraite

(43)
(44)
(45)

Les interfaces

Intérêt

Une classe ne peut pas hériter de plusieurs classes

Ceci peut être contournée à travers la notion

d’interface

Une classe peut implémenter plusieurs interfaces

Une interface peut étendre plusieurs interfaces

Particularités

Une interface ne possède pas d’attribut

Une interface peut posséder des constantes

Les interfaces ne sont pas instanciables (comme les

classes abstraites)

(46)

Les interfaces

Mise en œuvre

Mot clé interface

Déclaration des signatures des méthodes uniquement

(47)

Les interfaces

Exemple

(48)

La javadoc

Intérêts

Rédaction de la documentation technique des classes

au fur et à mesure du développement de ces mêmes

classes puis génération finale du html

Utilisation

Compris entre /** et */

Utilisation possible de balise html

Utilisation de tags définit par javadoc permettant de

typer certaines informations

(49)

La javadoc

Utilisation

Exemple de tags :

@author : Nom de l’auteur

@version : Identifiant de version

@param : Nom et signification de l’argument (méthodes

uniquement)

@return : Valeur de retour

(50)

La javadoc

Exemple

(51)

La javadoc

Résultat :

(52)
(53)

Travaux pratiques – TP2

Créer la classe Titulaire qui hérite de Personne

Package : fr.inra.ga.tp2

Créer les attributs et les méthodes

Créer une classe Test qui effectuera dans sa méthode

main() :

Création d’un titulaire

Lui affecter un indice

Affiche sur la console son nom et son salaire

(54)

Travaux pratiques – TP2

Créer la classe Contractuel

Créer l’interface Agent avec la méthode getSalaire()

Faire implémenter cette interface sur les classes

Titulaire et Contractuel

Implémenter la méthode getSalaire() sur ces 2 classes

Calculer la masse salariale annuelle dans la méthode

main() de la classe Test :

Création d’un tableau d’Agent[]

Y ajouter un titulaire et un contractuel

Affiche sur la console la masse salariale annuelle en utilisant une

boucle for sur le tableau

(55)

Travaux pratiques – TP2

Créer la classe Abstraite Animal

Avec la méthode abstraite PoseBague()

Créer les 2 classes Poisson et Mammifere qui hérite de

Animal

Coder les méthodes PoseBague() dans les 2

sous-classes

Dans la classe Test

Créer un tableau Animal[]

Y ajouter des Poissons et des Mammiferes

En parcourant le tableau Animal[] poser les bagues qu’aux

Poissons

(56)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(57)

StringBuffer (java.lang)

Version modifiable d’une chaine de caractères

(58)

Les collections

Plusieurs Objets pour grouper un ensemble

d’éléments

List

Séquence d’éléments ordonnée par indice

Peut contenir des éléments en double

Set

Ensemble d’éléments uniques (pas de doublons)

Map

Stock des paires clé-valeur

Pas de doublons pour les clés

(59)

Les collections

Ce sont des Interfaces qui implémentent toutes

l’interface Collection

Méthodes communes

add, get, contains, toArray, clear, …

Pas instanciable, mais il existe pour chacune des

implémentations

List : ArrayList, LinkedList

Set : HashSet, TreeSet

Map : HashMap, TreeMap

(60)

Iterator

Permet de parcourir les éléments d’une collection

Deux méthodes principales

(61)

Les dates

Date (java.util)

Pour stocker

Permet de stocker une date complète (avec le temps)

Pas de facilité pour créer une date spécifique

Calendar (java.util)

Pour manipuler

Possibilité d’ajout/suppression d’unité de temps

Info sur les dates (ex: est-ce un week-end ?)

DateFormat / SimpleDateFormat (java.text)

Pour afficher

(62)
(63)

Travaux pratiques – TP3

Utiliser les collections pour stocker les animaux

dans un élevage

Ajouter l’attribut List<animal> animaux

Modifier le constructeur pour le prendre en compte

Implémenter une méthode ajoute qui permet d’ajouter

un animal à l’élevage

Implémenter une méthode getAnimal qui permet de

retrouver un animal dans l’élevage à partir de son code

Dans une classe Test

Créer un élevage avec 10 poissons

(64)

Travaux pratiques – TP3

Ajouter à la classe Animal l’attribut

DateDeNaissance

Prendre en compte ce nouvel attribut dans le

constructeur de la classe

Implémenter une méthode affiche() sur la Classe

Animal afin d’afficher : codeAnimal : dd/mm/yyyy

Dans la Classe Test

Afficher la liste des animaux de l’élevage en utilisant la méthode

affiche de la classe Animal

(65)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(66)

Les Exceptions

Définition

Une exception est un signal indiquant que quelque

chose d’exceptionnelle (comme une erreur) s’est

produit

Elle interrompt le flot d’exécution normal du programme

Cela facilite la gestion des erreurs

Permet de séparer clairement le code d’exécution

normale du code de gestion des erreurs

(67)

Les Exceptions

Bloc try

Instructions susceptibles de lever une ou plusieurs

exceptions

Bloc catch

Instructions exécutés à la levée de l’exception

Plusieurs blocs catch peuvent suivre un bloc try

Bloc finally

Instructions exécutés en sortie du bloc try avec ou sans

levés d’exception

Si exception levée, les instructions du bloc finally

seront exécutés après les instructions du bloc catch

(68)
(69)

Les Exceptions

Instructions throw et throws

Une méthode peut intercepter une exception et la

renvoyer

soit telle quelle sans la modifier,

(70)

Les Exceptions

Créer son Exception

Toute exception doit héritée de Exception, sous-classe

de la classe Throwable

(71)

Les Exceptions

Créer son Exception

(72)

Travaux pratiques – TP4

Créer une Exception pour un animal non trouvé

dans un élevage

Si l’animal n’est pas trouvé levé cette exception

Dans la classe Test chercher un animal absent

Vérifier que l’exception est bien levée

(73)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(74)

Les entrées/sorties

Plusieurs classes du paquetage java.io

permettent de gérer les flux de données en entrée

et en sortie

sous forme de caractères (exemple fichiers textes)

BufferedReader, FileReader pour lire des caractères

BufferedWriter, FileWriter pour écrire des caractères

ou sous forme binaire (octets)

FileInputStream pour lire des octets

FileOuputStream pour écrire des octets

(75)

Les entrées/sorties

Lecture/écriture caractère par caractère

(76)

Les entrées/sorties

Lecture/écriture ligne par ligne

(77)

Les entrées/sorties

Accès aux fichiers

File donne accès aux informations d’un fichier ou d’un

(78)

Les entrées/sorties

Les fichiers de propriétés

Système de fichier clé-valeur

Utilisés pour l’accès aux fichiers de configuration

ex :

(79)

Les entrées/sorties

Les fichiers de propriétés

(80)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(81)

Connexion aux BD

JDBC : Java DataBase Connectivity

API permettant de se connecter aux bases de données

relationnelles

Le package java.sql contient les spécifications JDBC

Des interfaces : Connection, Statement, PreparedStatement,

ResultSet, Driver, …

Des exceptions : SQLException, SQLWarning, DataTruncation,

(82)

Connexion aux BD

Utilisation

(83)

Connexion aux BD

Les différents pilotes

MySQL

Jar : mysql-connector-java-5.1.22-bin.jar

Class name : com.mysql.jdbc.Driver

URL : jdbc:mysql://<hostname>[<:port>]/<dbname

Oracle

Jar : ojdbc5.jar

Class name : oracle.jdbc.driver.OracleDriver

(84)

Connexion aux BD

Optimisation

Statement est utilisé pour les requêtes statiques

PreparedStatement permet de gérer des requêtes

dynamiques

(85)

Travaux pratiques – TP5

Créer un fichier texte contenant une liste de

mouton

Dans la méthode main de la classe Test créer ce

fichier

(86)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(87)

SWING

Framework graphique

Permet de dessiner des fenêtres, des boutons, des arbres, des

listes, …

(88)

Les fenêtres

JWindow

Fenêtre basique. Pas de menu, titre, …

Utilisé pour faire des fenêtres d’attente

JDialog

Fenêtre pour les boites de dialogue

Peut être modale

JFrame

Fenêtre principale de l’application

Possède barre de titre

Peut accueillir des menus, des labels, des boutons …

(89)

Création d’une JFrame

(90)

Une fenêtre est composée de plusieurs parties

RootPane : container principal, c'est lui qui contient les autres

LayeredPane : forme juste un panneau composé du ContentPane et de la barre de menu

(MenuBar)

GlassPane : couche par dessus le tout utilisée pour intercepter les actions de l'utilisateur avant

qu'elles ne parviennent aux composants

(91)

Les composants sont destinés à afficher du

texte, à permettre à l’utilisateur de saisir du texte,

à afficher un bouton,

On ne peut pas ajouter un composant

directement sur la fenêtre

Les conteneurs sont destinés à accueillir les

composants et d’autres conteneurs

C’est les conteneurs qui seront ajoutés à la

fenêtre

(92)

IHM Windows avec Swing

Création d’une JPanel (conteneur)

(93)

IHM Windows avec Swing

Utilisation du MigLayout

(94)

Formation JAVA

Généralités

Notion de base du langage

Programmer Objet en Java

Librairies standard

Les erreurs et exceptions

Les entrées-sorties

Connexion aux bases de données

IHM Windows avec Swing

(95)

Java et le Web

Les JSP

JSP : Java Server Pages

Technologies qui permet la génération de pages web

dynamiques

Code java dans des tags prédéfinis à l’intérieur d’une page

HTML

(96)

Les Tags de directives

<%@page ... %>

Permet de définir les options qui s’appliquent à toute la JSP

En principe, placée en début de fichier

S’écrit sous la forme : option=valeur

<%include … %>

Utile pour insérer un élément commun (ex: en-tête)

<%! … %> , <%= … %> et <% … %>

Permet d’insérer du code java

<%! déclarations %>

<%= expression %>

<% code Java %>

(97)

Les Tags de directives

(98)

Les Tags useBean, setProperty, getProperty

<jsp:include>

Permet d’inclure le contenu généré par une jsp

<

jsp:include page=« relativeURL » />

(99)

Un exemple simple

(100)

Créer un projet Java Web avec Eclipse

File  New  Project…

Web  Dynamic Web Project

(101)

Pour aller plus loin…

Cours sur les JSP :

http://jmdoudoux.developpez.com/cours/developpons/java/chap-jsp.php

Struts

Framework qui enrichit les tags JSP pour faciliter le

développement

Cours :

http://jmdoudoux.developpez.com/cours/developpons/java/chap-struts.php

Références

Documents relatifs

mentionner l’équipe porteuse (avec les noms, prénoms mais également les disciplines enseignées et les établissements d’origine), le parcours éducatif auquel il

Une première manière de regretter cette dépolitisation consiste à la rapprocher des difficultés actuelles des enseignants à former les élèves au politique, au sens de

Pour optimiser les conditions favorisant le développement de ces compétences lors des séances de jeux de rôle, les pistes suivantes ont été identifiées à partir d’une

Trois principaux lieux ou rassemblements symboliques constituent des points de repère dans ce dédale : les grands magasins, les réceptions (privées ou officielles) et

Elle avait elle- même travaillé en tant qu’assistante réalisateur sur le film de fiction Le Faussaire de Volker Schlöndorff, venu tourner au Liban l’histoire d’un

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

ü pour pouvoir utiliser la JDK, il faut paramétrer le PATH pour l’outil Java et le CLASSPATH pour les classes de l’utilisateur}.

ü java est l’interpréteur de java, c’est la commande à utiliser pour exécuter un programme java1. ü jdb est le débogueur de java, c’est un l’outil utilisé pour débogué