******Programmation oriente objet********
---> Invoquer un constructeur de class Mere avec parametres :
ExtendedPoint::Extended(....):Point(x,y){.....}
---> Utilisation une methode Deja dans Classe mere : void Extended::print(){.....Point::print();....}
---> Affectation entre objet de meme type(meme classe): static : Normal--> Point p2=p1; [Link]();
// Dynamique : Génere un constructeur de copie : Point(Point &p);
---> Affectation :
Fille-->Mére : STATIC :ExtendedPoint p1(10,20,30); Point p2=p1; // les donnes de fille sont
perdus.
Fille-->Mére : DYNAMIQUE :..*();..*p2=p1//Donns conserve
***Declaration de la méthode comme : virtual void print(); // Dans classe Mére //****
---> Affectation : Mére-->Fille : STATIC :Casting(ca maarche pas)/+Surcharge de
l'operateur=(Possible !!) + constructeur de copie // Dans classe fille !!
Mére-->Fille : DYNAMIQUE :n'est possible si on utilise le casting.
******JAVA (Affectation)*****:
EN java les affectations entre classe mere et fille :
--> Fille -->Mére : Fille f=new Fille(..); Mére m=f;
--> Mére -->Fille : //Transtypage(casting), Objet Mére pointe effectivement un objet Fille
// Fille f1=new Fille(..); Mére m=f1 //objet mére pointe fille; Fille f2=(Fille)m;
****TYPES PRIMITIVES**** :
entiers : byte 10 , short 2 ,int 4, long 8
reel: float 4 ,double 8
char: 2
4 niveau de visibility :: public , default public // dehors package ni plus accesible // private ,
protected // accebile par class fille même s'elle dehors de package
A la place d’étoile on aura une classe String dans Java!!
Préférable d'utiliser double par float !!
Des solutions :
private float pu =20.5f // ....pu=(float)20.5 // Ou utilisons des doubles !!
--> LE role de compilateur s'est d'agir la classe crée par default , il intervient pour cree un lien par
classe Object , definie dan package Lang !!
--> Possibilite de concatener n'importe qoui avec une chaine exp : String s = "Produit : " +p1 ;
--> ToSTring(): il retourne une forte de chaine , il retourne le visage de l'objet , intervenir par defaut
par la classe mére Object !!
--> Si ceci nous nous plait pas on doit redéfinir ToString()
--> La classe Object nous intervenir des methodes et des definitions par defaut mais on peut
redefinir des autres !!
--> @Override :// anotation implemente dans JDK5// il nous dit que nous entrain de redefinir
correctement !!
--> Mettre une propriete associer a beaucouup de methodes on doit le declarer comme Globale ,
Propriete de Classee :D !!
--> private static '...': sotcker dans la classe mére !! ----> il peut etre accessible sur La classe --->
donne static son acceseur ca va mieux d'etre static !!
--> Classe n'est pas instanciable : Constructeur de la classe privée(Private) !!
--> public final double MAX-VALUE = 20 ; //constante intouchable !!//
--> Methode static ne peut pas acceder a des autres non static "pas de this"!!
--> Constructuer jamais ma3mero yqed ykon static !!
--> Une solution pour ne peut avoir tt static : utilisons "new" !
*****L' HERITAGE****** :
--> Pour manipuler l'heritage : " public static Extendedpoint extends Point"
--> Invoquer au moins un constructeur de la classe mére par défaut c'est : super() // appel expilicite
!! // Le premier comme instruction dans le constructeur//
--> La légature est tjrs realisé dynamiquement pas de virtuel dans java !!
--> Affectation fille-->MEre : "Point p1 = new ExtendedPoint(20,30,[Link]);"
"ExtendedPoint f = new....(10,20,new Color(10,0,1508));
"Point m = f;" " [Link]();"
--> Possibilite de connaitre tous dynamiquement , tous les infos sur nos objets et nos classes, c'est
l'introspection : "[Link]" getClass........" !!
--> Affectation mére-->fille : " PAs d'affectation : f1 = m1 "; Java nous offre un controleur de type
static : il verifie que le type est coherant , controleur de type dynamiq : lors d'execution il verifie
s'elle est correcte!!
Solut : On peut l'avoir par 2 condition : semantique(l'objet caste doit etre caste paar l'objet
qui se pass) et syntaxique(casting) !!
--> TOus est un objet dans java sauf les types primitives !!
--> Donne primitive (les 8 :) : On l'associe par des classes Wrappers : Ex : Integer p = new Integer(20);
//L'autoboxing //
--> Vector v = new vector(); [Link]("une chaine"); //equivalence// [Link](new String("une autre
chaine"));
--> Ex : int i = new Integer(50); //L'inboxing//
******Les Tableaux en java******** :
--> [Link](v) ; for(i=0 ; i<[Link]();i++){ [Link]("-" + [Link](i)) ;}
--> La classe Vector add dialieha lent 3la la Classe linkedList, Par contre la boucle d Vector plus rapide
3la dial LinkedList !!!
--> Généricité : Vector<Point> v new vector<>(); // foreach--> for(Point p : v) {[Link]();}
--> Définition d'un tableau : Que ls tableaux dynamique : type t[];
Instanciation d'un tableau : int t[] = new int[5] // les tableaux cas particulier des objets ;
--> remplir un tableau aléatoirement : t[i] = (int)([Link]() *900) +100; //entre 100 et 1000;
--> ajouter un élément à un tableau : on utilise vector qui le gère implicitement
-->Instancier et met des valeurs dedans : t = new int[]{12,14,15}
--> [Link] nbre de ligne num 1 , m[i].length:nbre de ligne numer 2
--> t = new LinkedList[3]; ---> une boucle après on met t[i]=new LinkedList<>(); --> t[0].add(new
Point);
--> Stringt[]=new String
*****Interfaces****** :
--> Méthode non définie : Partiellement abstraite(abstract) : des méthodes abstraites et des
méthodes contraites //
:Classe Entièrement(totalement) abstraite , ne peut pas contenir des donnes(sont
automatiqmt des constantes) : "Interface": public interface
--> LayoutManager est une interface :
// On utilise les interfaces :
1: Pour déléguer des taches ,
2: Lorsque le comportement est abstrait ,
3: n'avons pas des structures de données connus.
--> Jpanel content (JPanel)etContentPane(); // BorderLayout
--> Une classe implémente une interface(classe interface),Par contre une interface peut étendre une
interface(interface interface).
--> Fournir une implémentation : ActionListner
--> Rendre les boutons réactifs : ** a chaque Button un écouteur(Listner) diffèrent :** Jbutton src =
(Jbutton)[Link](); [Link]([Link]()); **
** ensemble de button associe le meme ecouteur :
**[Link]("actionPerformed()"); **
--> public Class Test extends JFrame implements ActionListener,MousseListener,.... : chaque class
peut implémenter une interface !
--> Associe un seul Listener pour rendre les buttons dans une classe operationel : public void
ActionListener(AcLisnr Listener) : for (... getcompenetcount) / Jbutton b =
()getcompenet(i);/[Link](Listeenr); //public void actionPerformed(ActionEvent e)
--> public void addActionlistner(String label,Acionlistn Listenr) { Jbutoon b = buttons
--> Hashtable indexe par ce qu'on veut : "private Hashtable<String,Jbutton> buttons Indexer les
buttons par leur text !! //[Link]([Link](),b);
--> Evenement de clavier : ***KeyListener(Keyevent e) : Keypresed,keyReleased,KeyTyped***
--> //Bloquer un caractere : setKeychar((char)0);
--> Un adapteur pour MouseListener && KeyLister (sans utiliser une implementation) : KeyAdapter :
public class ... extends Keyadapter
--> MouseListener : ** (Plus utilise)mouseclicked "moussepressed && mouseEntered"
,mouseEntered,mouseExited,moussepresssed,mousseReleased **
*******Les Interfaces : "composition et LayoutManager"******** !!
package [Link];
import [Link]
--> AWT abstract windowing 4 types de fenetres :
JFRame(fentre ordinaire pour l'utilisateur avec decort) , JDialogue(extrait de JFrame : fenetre fille) ,
JWindow(fenetre plate vierge) , JApllet(fenetre non autonome ,Meme fct de JFrame)
--> Classe component Hérite DE CLasse Objet , et CLasse container hérite de classe compenent , et
container peut contenir des compenents (agregation) !!
--> Jcompenent La classe mere de tous les compenent dans "SWING" ,
--> Exit_On_CLOSE, setsize , setlocation , setbounds : definit dans la claase.....
--> JPanel :un panneau , JLabel : une etiquette , JTextField : zone de texte , JButton : Boutton , les
composants d'un panneau : [Link]() ; accrocher un panneau :setContentPane(p1);
North
--> LayoutManager : setLAyoutManager(new Gridelayout(nbligne,nbcolon) /BorderLayout()) ---->
west center East South
--> Accelerer : public class ButtonPanle extends JPanel { public ButtonPanel(int x
,[Link]([Link]());g ...labels) // ... ;nbre de parametre //
*****FORMULAIRE***** :
--> Alignement, espacement vertical, espacement horizontal :
setLayout(FlowLayout([Link].20.0);
--> Donner une taille préferée a notre Jframe(Bricolage): setResizable(false);
--> BoxLayout : 2 paramètres --> le premier precis le panneau qu'on va se pointer , le deuxieme precis
si c'est horizontlmnet ou verticalment : public Form() { setLayout(new
BoxLayout(this,BoxLAyout.Y_AXIS));}
--> JLable l1 = new Jlabel(label); [Link](new DImension(arg0,arg1);)
--> Récupère la zone de texte : getcompenent(..);
--> Bordure : [Link]([Link]());
--> Combinaison de bordure et un titre : this();
[Link]([Link]([Link]([Link]),ti
tle));
--> Pour faire un menu : **3 classes a faire**
: Jmenu contient des menu et des menus contient des Items
// JMenuBAr=new JMenuBar(); // JMenu m1 = new JMenu("File"); // UNE théme : JMenuItem i1 =
new JMenuItem("New"); // Lors d'execution on genere : setJMenuBar(m);
--> La structure de donne qui nous permettre de crée tous à la même fois : String labels[][]={
{"File","New",....},{"Edit","copy",...} }; // Menu m = new Menu(labels);
--> Cree une icone : ImageIcon = new ImageIcon(iconFolder + t[i].toLowerCase() + suffix);