Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Java


Index » educatie » » informatica » Java
» Sabloane de comportament - Diagrama


Sabloane de comportament - Diagrama


Sabloane de comportament

2 OBSERVER

  • Util cand diferite obiecte trebuie informate de aparitia unui eveniment;
  • Sablonul este utilizat frecvent in JFC (Swing) pentru tratarea evenimentelor, si foloseste ca suport clasa Observable si interfata Observer;
  • Necesar mai ales cand exista mai multe modalitati de afisare a unor date si dorim ca modificarile ce apar in date sa se reflecte automat si in display-urile asociate;


  • In JFC clasa observata (Subiectul= clasa Observable) tine evidenta tuturor obiectelor ce trebuie informate de aparitia modificarilor (implementeaza metoda notifyObservers()), Observatorii contin o functie de actualizare update() (ex2).

Diagrama.

Exemple.

1.(J.Cooper)

Modurile de afisare sunt definite prin intermediul observatorilor ("Observers") si implementeaza interfata:

abstract interface Observer

Datele sunt referite drept "Subiect" si implementeaza:

abstract interface Subject

Fie un program al carui Subiect ("data repository") este reprezentat de fereastra:

implementata de codul urmator:

public class Watch2L extends Jframe

implements ActionListener, ItemListener, Subject

//se creaza doi observatori: unul care afiseaza culoarea si numele sau, si altul care adauga //culoarea intr-o lista:

//---------create observers---------

ColorFrame cframe = new ColorFrame(this);

ListFrame lframe = new ListFrame(this);

//la fiecare actionare a unui buton radio, se apeleaza metoda sendNotify a fiecarui Observator care //si-a inregistrat interesul fata de datele din Subiect:

public void itemStateChanged(ItemEvent e)

private void notifyObservers(JRadioButton rad)



Programul final arata astfel:

//Clasele ce definesc Observatorii

class ColorFrame extends Jframe    implements Observer

public void sendNotify(String s)

public void paint(Graphics g)

.

2. (B.Eckel)

Pe o grila sunt plasate patratele de diferite culori. Cand se selecteaza cu mouse-ul o patratica, toate casutele adiacente isi schimba culoarea in cea a casutei selectate.

//: observer:BoxObserver.java

// Demonstration of Observer pattern using

// Java's built-in observer classes.

package observer;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

// You must inherit a new type of Observable:

class BoxObservable extends Observable

}

public class BoxObserver extends JFrame   

  public static void main(String[] args)

}

class OCBox extends JPanel implements Observer ;

  static Random rand = new Random();

  static final Color newColor()

  OCBox(int x, int y, Observable notifier)

  public void paintComponent(Graphics g)

  class ML extends MouseAdapter

  }

  public void update(Observable o, Object arg)

  }

  private final boolean nextTo(OCBox b)

} ///:~

Tema 4. (B. Eckel) Creati un sistem Observer minimal utilizand java.util.Timer in interiorul clasei Observable, pentru a genera evenimente ce sunt raportate catre Observers (clasele observator). Creati cativa observatori (folosind clase interioare anonime) si inregistrati-i cu Observable si aratati ca sunt apelati cand apar evenimentele de la Timer.







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate