document.write();
où document est une page Web en cours d'affichage
(l'objet considéré). L'effet de cette fonction write() est
écrire un message dans le document.
document.getElementsByTagName( 'p' );
fonction qui
retourne un objet paragraphe ( p ) dans un document HTML.
par = document.getElementsByTagName( 'p' );
par.setAttribute("style", "color:blue");
on peut ensuite lui attribuer avec setAttribute() une
couleur bleu (color:blue)...
window.open("https://docs.oracle.com/javase/tutorial/");
on ouvre l'URI spécifié dans l'objet window, qui
représente une fenêtre du navigateur.
window.moveTo(...) déplace une fenêtre vers la position donnée
ecran.println("Hello, World");
ecran. PrintStream
, flux de sortie.OBJET = données + opérations (dits aussi attributs et méthodes).
String |
length , ...méthodes : charAT(), concat(), indexOf(),
...usage : i = s.indexOf('a');
-- le rang de a dans la chaîne s.
|
Point |
p.setX(2);
-- affecte 2 à l’abscisse x du point pa = p.getY();
-- accès à l’ordonnée y de p |
Calendar |
maintenant
= Calendar.getInstance();jour = maintenat.get
(Calendar.DAY_OF_MONTH); |
etc...
Pile p ← vide;
Lire un caractère c
Tant que c défini {
si (c = <<une parenthèse ouvrante>>)
p ← empiler(p, c)
sinon si (c <<est une parenthèse fermante>>) {
si (estVide(p)) retourner "ERREUR: parenthèse fermante en trop"
sinon si (sommet(p) <<est du même type que>> c)
p ← depiler(p)
sinon retourner "ERREUR: parenthèses de types différents"
sinon continuer
Lire un caractère c
}
}
si (estVide(p)) retourner "OK"
sinon retourner "ERREUR: il manque au moins une parenthèse fermante"
public class TestPileParenthese2 {
static String s = "(())<[{}]#";
static String ouvrante ="([{<";
static String fermante =")]}>";
static public void main(String args[]) {
char c; int i=0; boolean ok = true;
Pile p = new Pile();
while ((c = s.charAt(i++)) != '#') {
if (ouvrante.indexOf(c)!= -1)
p.empiler(c); // On empile un caractère ouvrant
else if (fermante.indexOf(c) != -1)
if (p.estVide()) { // !parenthèse fermante en trop
erreur ("ERREUR! parenthèse fermante en trop " + c );
ok = false; break;
}
else if (compare (c, p.sommet() )) // même type, on dépile.
p.depiler();
else { // !parenthèses de types différents
erreur ("ERREUR! parenthèses de types différents: " + c);
ok = false; break;
}
// Autrement c'est un autre caractère...
}
if (ok)
if (p.estVide())
System.out.println ("OK, bien parenthesee");
else erreur ("ERREUR! parenthèse ouvrante en trop:" + p.sommet());
else;
}
// Routines locales
static boolean compare (char a, char b){
return fermante.indexOf(a) == ouvrante.indexOf(b);
}
static void erreur(String s) {
System.out.println (s);
}
}
t avec des manipulations comme
t[top],
t[i-j] ...
l'algorithme serait moins facile à écrire, mettre au point et
maintenir... | L'application fait | L'objet fait |
|---|---|
p |
char t[]; |
p.empiler (c) |
top++; |
p.dépiler |
top--; |
p.sommet() |
return
t [top]; |
Mais où sont donc programmées les données et les opérations sur un objet?
Dans un endroit séparé... La classe.
Elle déclare les données d'un objet de la classe et les opérations qui lui sont applicables.
| Les données (attributs) |
char[] t; |
| Les opérations (méthodes) |
public void empiler(char
c) { |
public char
sommet() { |
|
public void depiler()
{ |
|
public boolean
estVide() { |
|
... |
Une classe Pile est donc l'ensemble des objets ayant ces caractéristiques.
Le source complet en Java
NB. Dans certains langages, on dit aussi Module, Type, Package, cluster...
Autre exemple : une classe qui définit un point de l'espace.
/**
* Classe Point du plan avec ses cordonnées x et y
*/
public class Point {
protected int x, y;
public Point(){
this (0);
}
public void setX(int p) {
x = p;
}
public void setY(int p) {
y = p;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
};
Point p; on déclare un objet p de
classe Pointp.setX (1); affecte 1 à l'abscisse de pp.setY (2); affecte 2 à l'ordonnée de pr = p.getX (); r recoit 1 m = Math.sqrt ( p.getX()*p.getX() + p.getY()*p.getY() );On n'a pas besoin de connaître les données (réelles) x
et y définies pour un objet Point.
Encore moins de les manipuler directement ! (i.e. faire r = p.x; directement sans
passer par la méthode appropriée.)
Rectangle
qui utilise la classe Point), ... EXTENSIONS HORIZONTALES
Rectangle
ou un Cercle sont des spécialisations (sous-classes)
particulières d'une classe générale FigureGéométrique)...EXTENSION VERTICALE