Documente Academic
Documente Profesional
Documente Cultură
1. Ce este o interfata ?
Definitie :
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
O interfata Java defineste un set de metode dar nu specifica nici o implementare pentru
ele. O clasa care implementeaza o interfata trebuie obligatoriu sa specifice implementari
pentru toate metodele interfetei, supunandu-se asadar unui anumit comportament.
Implementarea unei interfete
Implementarea uneia sau mai multor interfete de catre o clasa se face prin intermediul
cuvantului cheie implements:
class NumeClasa implements NumeInterfata sau
class NumeClasa implements Interfata1, Interfata2, ...
O clasa poate implementa oricate interfete sau poate sa nu implementeze nici una.
In cazul in care o clasa implementeaza o anumita interfata, atunci trebuie obligatoriu sa
specifice cod pentru toate metodele interfetei. Din acest motiv, odata creata si folosita la
implementarea unor clase, o interfata nu mai trebuie modificata, in sensul ca adaugarea
unor metode noi sau schimbarea signaturii metodelor existente vor duce la erori in
compilarea claselor care o implementeaza. Evident, o clasa poate avea si alte metode si
variabile membre in afara de cele definite in interfata.
O interfata nu este o clasa, dar orice referinta de tip interfata poate primi ca valoare o
referinta la un obiect al unei clase ce implementeaza interfata respectiva. Din acest motiv,
interfetele pot fi privite ca tipuri de date si vom spune adesea ca un obiect are tipul X,
unde X este o interfata, dacacesta este o instanta a unei clase ce implementeaza interfata
X.
Implementarea unei interfete poate sa fie si o clasa abstracta.
2.
// Elaborati un Servlet care va sterge din
tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// inregistrarea cu id-ul 10. Numele si parola
de conectare (username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
Class.forName("com.mysql.jdbc.Driver").new
Instance();
Connection con =
DriverManager.getConnection("jdbc:mysql://l
ocalhost:3306/TestDB", "root", "1234");
PreparedStatement statement =
con.prepareStatement("DELETE FROM test
WHERE id = ?");
statement.setString(1, "10");
statement.execute();
con.close();
}
}
3.
// Elaborati un program ce va crea o fereastra si label.setBackground(Color.red);
prin intermediul unui obiect de tip java.awt.List culori = new List(3);
va schimba culoarea fundalului culori.add(" Rosu ");
// unui obiect de tip java.awt.Label culori.add(" Verde ");
culori.add(" Albastru ");
import java.awt.Color; culori.select(3);
import java.awt.Frame; add(label);
import java.awt.GridLayout; add(culori);
import java.awt.Label; setSize(200, 200);
import java.awt.List; culori.addItemListener(this);
import java.awt.event.ItemEvent; }
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter; public void itemStateChanged(ItemEvent e) {
import java.awt.event.WindowEvent; switch (culori.getSelectedIndex())
{
class Fereastra extends Frame implements case 0:
ItemListener {
label.setBackground(Color.red);
private static final long serialVersionUID = break;
1L; case 1:
Un fir de executie este similar unui proces secvential, in sensul ca are un inceput, o
secventa de executie si un sfarsit. Diferenta dintre un fir de executie si un proces consta
in faptul ca un fir de executie nu poate rula independent ci trebuie sa ruleze in cadrul
unui proces.
In aceasta stare firul este ”vid”, el nu are alocate nici un fel de resurse sistem si singura
operatiune pe care o putem executa asupra lui este lansarea in executie, prin metoda start.
Apelul orica rei alte metodein afara de start
nu are nici un sens si va provoca o exceptie de tipul IllegalThreadStateException.
Starea ”Runnable”
Dupa apelul metodei start un fir va trece in starea ”Runnable”, adica va fi in executie.
fir.start();
//fir se gaseste in starea "Runnable"
Un fir aflat in starea ”Runnable” nu inseamna neapa rat ca se ga seste efectiv in executie,
adica instructiunile sale sunt interpretate de procesor. Acest lucru se ıntampla din cauza
ca majoritatea calculatoarelor au un singur procesor iar acesta nu poate rula simultan
toate firele de executie care se gasesc in starea ”Runnable”. Pentru a rezolva aceasta
problema exista o planificare care sa partajeze dinamic si corect procesorul intre toate
firele de executie care sunt in starea ”Runnable”. Asadar, un fir care ”ruleaza ” poate sa
-si astepte de fapt randul la procesor.
Starea ”Dead”
Este starea in care ajunge un fir de executie la terminarea sa. Un fir nu poate fi oprit din
program printr-o anumita metoda , ci trebuie sa se termine in mod natural la incheierea
metodei run pe care o executa . Spre deosebire de versiunile curente ale limbajului Java,
in versiunile mai vechi exista metoda stop a clasei Thread care termina fortat un fir de
executie, insa aceasta a fost eliminata din motive de securitate. Asadar, un fir de executie
trebuie sa -si ”aranjeze” singur propria sa ”moarte”.
2.
// Elaborati un Servlet care va extrage din tabelul Connection con =
`test(id, nume, prenume, info)` al bazei de date DriverManager.getConnection("jdbc:mysql://loc
`TestDB` alhost:3306/TestDB", "root", "1234");
// cimpurile id si nume, si le va afisa in consola.
Numele si parola de conectare (username: root; Statement st =
password: 1234) con.createStatement();
String sql = ("SELECT * FROM
import java.io.*; log;");
import java.sql.*; ResultSet rs =
import javax.servlet.*; st.executeQuery(sql);
import javax.servlet.http.*; while(rs.next()) {
•Instantierea
Declararea unui vector nu implica si alocarea memoriei necesare pentru retinerea
elementelor. Operatiunea de alocare a memoriei, numita si instantierea vectorului, se
realizeaza intotdeauna prin intermediul op-eratorului new. Instantierea unui vector se va
face printr-o expresie de genul:
•Initializarea (optional) Dupa declararea unui vector, acesta poate fi initializat, adica
elementele sale pot primi niste valori initiale, evident daca este cazul pentru asa ceva. In
acest caz instantierea nu mai trebuie facuta explicit, alocarea memoriei fa candu-se
automat in functie de numa rul de elemente cu care se initializeaza vectorul.
String culori[] = {"Rosu", "Galben", "Verde"}; int []factorial = {1, 1, 2, 6, 24, 120};
Primul indice al unui vector este 0, deci pozitiile unui vector cu n ele-mente vor fi
cuprinse intre 0 si n − 1. Nu sunt permise constructii de genul Tip
numeVector[nrElemente], alocarea memoriei fa candu-se doar prin in-termediul
opearatorului new.
int v[10]; //ilegal
int v[] = new int[10]; //correct
2.
// Elaborati un program care va afisa } catch (IOException e) {
imaginea 'test.jpg', localizata in directoria }
'C:/img/' intr-un obiect
// de tip JFrame cu dimensiunile 400x400 }
pixeli.
public void paint(Graphics g) {
import java.awt.*; g.drawImage(img, 0, 0, null);
import java.awt.image.*; }
import java.io.*;
import javax.imageio.*; public static void main(String[] args) {
import javax.swing.*;
JFrame f = new JFrame("Test");
public class LoadImage extends Component
{ f.setDefaultCloseOperation(JFrame.EXIT_ON_
CLOSE);
private static final long f.add(new LoadImage());
serialVersionUID = 1L; f.setLocationRelativeTo(null);
private BufferedImage img; f.setResizable(false);
f.setSize(new Dimension(400, 400));
public LoadImage() { f.setVisible(true);
try { }
img = ImageIO.read(new }
File("C:/img/test.jpg"));
3.
// Creati o fereastra in care sa afisati numerele frame.setLocationRelativeTo(null);
prime de la 0 la 100 intr-un aranjament de tip frame.setVisible(true);
GridLayout }
2.
// Creati un applet, in cadrul caruia, odata backg = backbuffer.getGraphics();
cu apasarea click-ului sting la mouse, backg.setColor(Color.black);
pointer-ul backg.fillRect(0, 0, width, height);
// mouse-ului se va comporta ca un brush ( backg.setColor(Color.white);
va colora un cerc (10px) imprejurul
punctului in care addMouseMotionListener(this);
// se afla) }
import java.util.Arrays;
Vr.5:
1. Conceptul de desenare
Un program Java care are interfata grafica cu utilizatorul trebuie sa deseneze pe ecran
toate componentele sale care au o reprezentare vizual˘. Aceasta desenare include
componentele standard folosite in aplicatie precum si cele definite de ca tre programator.
Desenarea componentelor se face automat si este un proces care se executa in urma
toarele situatii:
la afisarea pentru prima data a unei componente;
la operatii de minimizare, maximizare, redimensionare a suprafetei de afisare;
ca ra spuns al unei solicita ri explicite a programului.
Metoda paint
Dupa cum am spus, toate desenele care trebuie sa apara pe o suprafata de afisare se
realizeaza in metoda paint a unei componente. Metoda paint este definita in superclasa
Component insa nu are nici o implementare si, din acest motiv, orice obiect grafic care
doreste sa se deseneze trebuie sa o suprade-fineasca pentru a-si crea propria sa
reprezentare. Componentele standard AWT au deja supradefinita aceasta metoda deci nu
trebuie sa ne preocupe desenarea lor, insa putem modifica reprezentarea lor grafica prin
crearea unei subclase si supradefinirea metodei paint, avand insa grija sa apela m si
metoda superclasei care se ocupa cu desenarea efectiva a componentei.
2.
// Elaborati un Servlet care va sterge din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// inregistrarea cu id-ul 10. Numele si parola de conectare (username: root; password:
1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati un program care va afisa maximul a trei numere cu ajutorul operatorului ternar.
// In caz ca numerele sunt egale se va arunca o noua exceptie (MyException) cu mesajul
"numerele sunt egale"
// Numerele se vor citi de la tastatura.
import java.util.Scanner;
System.out.println(max);
} catch (MyException e) {
e.printStackTrace();
}
}
Vr.6:
1. Contextul grafic de desenare
Inainte ca utilizatorul sa poata desena, el trebuie sa obtina un context grafic de desenare
pentru suprafata ca reia ii apartine regiunea pe care se va desena. Un context grafic este,
de fapt, un obiect prin intermediul ca ruia putem controla procesul de desenare a unui
obiect. In general, desenarea se poate face:
pe o portiune de ecran, la imprimanta sau intr-o zona virtuala de memorie.
Un context grafic este specificat prin intermediul unui obiect de tip Graph-ics primit ca
parametru in metodele paint si update. In functie de dispozi-tivul fizic pe care se face
afisarea (ecran, imprimanta , plotter, etc) metodele de desenare au implementa ri interne
diferite, transparente utilizatorului.
Clasa Graphics pune la dispozitie metode pentru:
primitive grafice: desenarea de figuri geometrice, texte si imagini
stabilirea proprieta ¸ilor contextului grafic, adica stabilirea:
– culorii si fontului curente cu care se face desenarea,
– originii coordonatelor suprafetei de desenare,
– suprafetei in care sunt vizibile componentelor desenate,
– modului de desenare.
Proprieta tile contextului grafic
La orice tip de desenare parametrii legati de culoare, font, etc. vor fi specificati pentru
contextul grafic in care se face desenarea si nu vor fi trimisi ca ar-gumente metodelor
respective de desenare. In continuare, enumera m aceste proprieta ti si metodele asociate
lor din clasa Graphics.
Proprietate Metode
2.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Alcatuiti un program care va calcula maximul dintr-un sir numeric. Datele se vor citi
dintr-un fisier (input.txt)
// in care pe prima pozitia va fi numarul 'n' de elemente urmat de n numere intregi.
Maximul va fi
// afisat intr-un alt fisier (output.txt).
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
out.println(max);
out.close();
s.close();
}
Vr.7:
1. Folosirea imaginilor
In AWT este posibila folosirea imaginilor create extern in format gif sau jpeg. Orice
imagine va fi reprezentata ca o instanta a clasei Image. Aceasta nu este o clasa de
componente (nu extinde Component) ci implementeaza obiecte care pot fi desenate pe
suprafata unor componente cu metode specifice unui context grafic pentru componenta
respectiva (similar modului cum se deseneaza o linie sau un cerc).
Afisarea imaginilor
Afisarea unei imagini presupune realizarea urma toarilor doi pasi:
1.Crearea unui obiect de tip Image;
2.Afisarea propriu-zisa intr-un context grafic;
Crearea unui obiect de tip Image se face folosind o imagine dintr-un fisier fie aflat pe
masina pe care se lucreaza , fie aflat la o anumita adresa Web (URL). Metodele pentru
inca rcarea unei imagini dintr-un fisier se ga sesc in clasele Applet si Toolkit, avand insa
aceeasi denumire getImage si urma toarele formate:
Applet Toolkit
getImage(URL url) getImage(URL url)
getImage(URL url, String fisier) getImage(String fisier)
Afisarea unei imagini intr-un context grafic se realizeaza prin intermediul metodei
drawImage din clasa Graphics si, in general, va fi facuta in metoda paint a unei
componente. Cele mai uzuale formate ale metodei sunt:
boolean drawImage(Image img, int x, int y, ImageObserver observer) boolean
drawImage(Image img, int x, int y, Color bgcolor,
ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver
observer)
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor,
ImageObserver observer)
2.
// Creati un program java care sa adauge intr-un obiect de tip JFrame 2 ferestre interne.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
class InnerFrame extends JInternalFrame {
private static final long serialVersionUID = 1L;
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Elaborati un program care sa gaseasca String-ul cu cel mai mare numar de caractere si
nu contine
// cifre. Fiecare sir de caractere se va citi din fisier (input.txt) unde String-urile vor fi
plasate
// fiecare pe un rind nou. String-ul gasit va fi scris intr-un fisier (output.txt).
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
out.print(maxLengthStr);
out.close();
in.close();
}
import java.io.;
public class LineCount {
static public void main(String args[]) throws Exception {
Change the directory where the count files are existing
File di = new File(ccount);
File fl[] = di.listFiles();
int j;
int count=0;
String str=;
String totalinfo=;
}
}
}
Vr.8:
1. Folosirea ferestrelor
Pentru a fi afisate pe ecran componentele grafice ale unei aplicatii trebuie plasate pe o
suprafata de afisare (container). Fiecare componenta poate fi continuta doar intr-un
singur container, ada ugarea ei pe o suprafta noua de afisare determinand eliminarea ei
de pe vechiul container pe care fusese plasat˘. Intrucat containerele pot fi incapsulate in
alte containere, o com-ponenta va face parte la un moment dat dintr-o ierarhie. Ra da
cina acestei ierarhii trebuie sa fie un asa numit container de nivel inalt, care este
reprezen-tat de una din clasele JFrame, JDialog sau JApplet. Intrucat de appleturi ne vom
ocupa separat, vom analiza in continuare primele doua clase.
Clasa Window
Clasa Window este rar utilizata in mod direct deoarece permite doar crearea unor ferestre
care nu au chenar si nici bara de meniuri. Este utila atunci cand dorim sa afisam ferestre
care nu interactioneaza cu utilizatorul ci doar ofera anumite informatii.
Metodele mai importante ale clasei Window, care sunt de altfel mostenite de toate
subclasele sale, sunt date de mai jos:
show ; hide; isShowing ; dispose ; pack ; getFocusOwner
Clasa Frame
Este derivata a clasei Window si este folosita pentru crearea de ferestre inde-pendente si
functionale, eventual continand o bara de meniuri. Orice aplicatie cu interfata grafica
conttine cel putin o fereastra , cea mai importanta fiind numita si fereastra principal˘.
Constructorii uzuali ai clasei Frame permit crearea unei ferestre cu sau fa ra titlu, initial
invizibila . Pentru ca o fereastra sa devina vizibila se va apela metoda show definita in
superclasa Window.
2.
// Elaborati un Servlet care va introduce in tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// o inregistrare. Numele si parola de conectare (username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class InsertIntoDatabase extends HttpServlet {
statement.execute();
con.close();
}
}
3.
// Creati un applet care va afisa tabela inmultirii la 2 (de la 1..10). Textul va fi afisat
// in coloana printr-un ciclu while.
import java.applet.Applet;
import java.awt.Graphics;
Vr.9:
1. Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Clasa Label
Un obiect de tip Label (eticheta ) reprezinta o componenta pentru plasarea unui text pe o
suprafata de afisare. O eticheta este formata dintr-o singura linie de text static ce nu
poate fi modificat de ca tre utilizator, dar poate fi modificat din program.
Clasa Button
Un obiect de tip Button reprezinta o componenta pentru plasarea unui bu-ton etichetat
pe o suprafata de afisare. Textul etichetei este format dintr-o singura linie.
2.
// Elaborati un Servlet care va extrage din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// cimpurile id si nume, si le va afisa in consola. Numele si parola de conectare
(username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
Statement st = con.createStatement();
String sql = ("SELECT * FROM log;");
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2));
}
con.close();
}
}
3.
// Creati o clasa care va porni 2 fire de executie, unul sa afiseze numerele pare de la 0 la
10, iar
// celalalt de cele impare de la 0 la 10.
t1.start();
t2.start();
}
}
Vr.10:
1. S¸iruri de caractere
In Java, un sir de caractere poate fi reprezentat printr-un vector format din elemente de tip
char, un obiect de tip String sau un obiect de tip StringBuffer.
Daca un sir de caractere este constant (nu se doreste schimbarea continutului sa pe
parcursul executiei programului) atunci el va fi declarat de tipul String, altfel va fi
declarat de tip StringBuffer. Diferenta principala intre aceste clase este ca StringBuffer
pune la dispozitie metode pentru modificarea continutului sirului, cum ar fi: append,
insert, delete, reverse.
Uzual, cea mai folosita modalitate de a lucra cu siruri este prin intermediul clasei
String, care are si unele particularita ti fata de restul claselor menite sa simplifice cat
mai mult folosirea sirurilor de caractere. Clasa StringBuffer va fi utilizata predominant in
aplicatii dedicate procesa rii textelor cum ar fi editoarele de texte.
Exemple echivalente de declarare a unui sir:
String s = "abc";
String s = new String("abc"); char data[] = {’a’, ’b’, ’c’}; String s = new String(data);
Observati prima varianta de declarare a sirului s din exemplul de mai sus - de altfel,
cea mai folosita - care prezinta o particularitate a clasei String fata de restul claselor
Java referitoare la instantierea obiectelor sale.
Concatenarea sirurilor de caractere se face prin intermediul operatorului+ sau, in
cazul sirurilor de tip StringBuffer, folosind metoda append.
String s1 = "abc" + "xyz"; String s2 = "123";
String s3 = s1 + s2;
2.
// Elaborati un program care va afisa imaginea 'test.jpg', localizata in directoria 'C:/img/'
intr-un obiect
// de tip JFrame cu dimensiunile 400x400 pixeli.
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public LoadImage() {
try {
img = ImageIO.read(new File("C:/img/test.jpg"));
} catch (IOException e) {
}
out.print(maxLengthStr);
out.close();
in.close();
}
Vr.11:
1. Ce este o interfata ?
Definitie :
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
O interfata Java defineste un set de metode dar nu specifica nici o implementare
pentru ele. O clasa care implementeaza o interfata trebuie obligatoriu sa specifice
implementari pentru toate metodele interfetei, supunandu-se asadar unui anumit
comportament.
Interfata FilenameFilter
Instantele claselor ce implementeaza aceasta interfata sunt folosite pentru a crea filtre
pentru fisiere si sunt primite ca argumente de metode care listeaza continutul unui
director, cum ar fi metoda list a clasei File.
Asadar, putem spune ca metoda list primeste ca argument o alta functie care specifica
daca un fisier va fi returnat sau nu (criteriul de filtrare).
Interfata FilenameFilter are o singura metoda : accept care specifica criteriul de
filtrare si anume, testeaza daca numele fisierului primit ca para-metru indeplineste
conditiile dorite de noi.
Definitia interfetei este:
public interface FilenameFilter {
public boolean accept(File dir, String numeFisier);
}
Asadar, orice clasa de specificare a unui filtru care implementeza interfata
FilenameFilter trebuie sa implementeze metoda accept a acestei interfete. Aceste clase
mai pot avea si alte metode, de exemplu un constructor care sa primeasca criteriul de
filtrare.
2.
// Elaborati un Servlet care va sterge din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// inregistrarea cu id-ul 10. Numele si parola de conectare (username: root; password:
1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati un applet care va afisa tabela inmultirii la 2 (de la 1..10). Textul va fi afisat
// in coloana printr-un ciclu while.
import java.applet.Applet;
import java.awt.Graphics;
Vr.12:
1. Ce sunt fluxurile?
Definitii:
Un flux este un canal de comunicatie unidirectional intre doua procese.
Un proces care descrie o sursa externa de date se numeste proces produca tor. Un
proces care descrie o destinatie externa pentru date se numeste proces consumator.
Un flux care citeste date se numeste flux de intrare. Un flux care scrie date se numeste
flux de iesire.
Clasificarea fluxurilor
Exista trei tipuri de clasificare a fluxurilor:
•Dupa directia canalului de comunicatie deschis fluxurile se impart in:
– fluxuri de intrare (pentru citirea datelor)
– fluxuri de iesire (pentru scrierea datelor)
2.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati un program care va afisa maximul a trei numere cu ajutorul operatorului ternar.
// In caz ca numerele sunt egale se va arunca o noua exceptie (MyException) cu mesajul
"numerele sunt egale"
// Numerele se vor citi de la tastatura.
import java.util.Scanner;
System.out.println(max);
} catch (MyException e) {
e.printStackTrace();
}
}
import java.io.;
class FileIO {
% java FileIO
Enter some numbers.
123
4.4 5.5
6.67
^D
numberCount=6
number=1.0
number=2.0
number=3.0
number=4.4
number=5.5
number=6.67
... end of example run(s)
Vr.13:
1. Serializarea obiectelor
Serializarea obiectelor se realizeaza prin intermediul fluxurilor definite de clasele
ObjectOutputStream (pentru salvare) si ObjectInputStream(pentru restaurare).
Acestea sunt fluxuri de procesare, ceea ce inseamna ca vor fi folosite impreuna cu alte
fluxuri pentru scrierea/citirea efectiva a datelor pe mediul extern pe care va fi salvat, sau
de pe care va fi restaurat un obiect serializat.
Mecanismul implicit de serializare a unui obiect va salva numele clasei obiectului,
signatura clasei si valorile tuturor campurile serializabile ale obiec-tului. Referintele la
alte obiecte serializabile din cadrul obiectului curent vor duce automat la serializarea
acestora iar referintele multiple ca tre un acelasi obiect sunt codificate utilizand un
algoritm care sa poata reface ”reteaua de obiecte” la aceeasi stare ca atunci cand obiectul
original a fost salvat.
Clasele ObjectInputStream si ObjectOutputStream implementeaza interfetele
ObjectInput, respectiv ObjectOutput care extind DataInput, respectiv DataOutput, ceea
ce inseamna ca , pe langa metodele dedicate serializa rii obiectelor, vor
exista si metode pentru scrierea/citirea datelor primitive si a sirurilor de caractere.
Metodele pentru serializarea obiectelor sunt:
• writeObject, pentru scriere si
• readObject, pentru restaurare.
Clasa ObjectOutputStream
Scrierea obiectelor pe un flux de iesire este un proces extrem de simplu, secventa uzuala
fiind cea de mai jos:
ObjectOutputStream out = new ObjectOutputStream(fluxPrimitiv);
out.writeObject(referintaObiect);
out.flush();
fluxPrimitiv.close();
2.
// Creati un program java care sa adauge intr-un obiect de tip JFrame 2 ferestre interne.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Elaborati un program care va contine o metoda ce poate primi ca parametri oricite
valori de tip intreg
// si returneaza maximul dintre acesta care va fi afisat in consola.
import java.util.Arrays;
import java.io.;
file.txt
I drink Java
I sleep Java
This is test string 1
This is test string 20000
Vr.14:
1. Definitia Interfetei
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati o clasa care va porni 2 fire de executie, unul sa afiseze numerele pare de la 0 la
10, iar
// celalalt de cele impare de la 0 la 10.
t1.start();
t2.start();
}
}
Vr.15:
1. Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Clasa Checkbox
Un obiect de tip Checkbox (comutator) reprezinta o componenta care se poate ga si in
doua sta ri: ”selectata ” sau ”neselectata ” (on/off). Actiunea utilizatorului asupra unui
comutator il trece pe acesta in starea complemen-tara celei in care se ga sea. Este folosit
pentru a prelua o anumita optiune de la utilizator.
Clasa Choice
Un obiect de tip Choice defineste o lista de optiuni din care utilizatorul poate selecta una
singura . La un moment dat, din intreaga lista doar o sin-gura optiune este vizibila , cea
selectata in momentul curent. O componenta Choice este insotita de un buton etichetat
cu o sageata verticala la apa sarea ca ruia este afisata intreaga sa lista de elemente, pentru
ca utilizatorul sa poata selecta o anumita optiune.
2.
// Elaborati un program care va afisa imaginea 'test.jpg', localizata in directoria 'C:/img/'
intr-un obiect
// de tip JFrame cu dimensiunile 400x400 pixeli.
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public LoadImage() {
try {
img = ImageIO.read(new File("C:/img/test.jpg"));
} catch (IOException e) {
}
import java.util.Scanner;
System.out.println(max);
} catch (MyException e) {
e.printStackTrace();
}
}
Vr.16:
1. Serializarea obiectelor
Serializarea obiectelor se realizeaza prin intermediul fluxurilor definite de clasele
ObjectOutputStream (pentru salvare) si ObjectInputStream(pentru restaurare).
Acestea sunt fluxuri de procesare, ceea ce inseamna ca vor fi folosite impreuna cu alte
fluxuri pentru scrierea/citirea efectiva a datelor pe mediul extern pe care va fi salvat, sau
de pe care va fi restaurat un obiect serializat.
Mecanismul implicit de serializare a unui obiect va salva numele clasei obiectului,
signatura clasei si valorile tuturor campurile serializabile ale obiec-tului. Referintele la
alte obiecte serializabile din cadrul obiectului curent vor duce automat la serializarea
acestora iar referintele multiple ca tre un acelasi obiect sunt codificate utilizand un
algoritm care sa poata reface ”reteaua de obiecte” la aceeasi stare ca atunci cand obiectul
original a fost salvat.
Clasele ObjectInputStream si ObjectOutputStream implementeaza interfetele
ObjectInput, respectiv ObjectOutput care extind DataInput, respectiv DataOutput, ceea
ce inseamna ca , pe langa metodele dedicate serializa rii obiectelor, vor
exista si metode pentru scrierea/citirea datelor primitive si a sirurilor de caractere.
Metodele pentru serializarea obiectelor sunt:
• writeObject, pentru scriere si
• readObject, pentru restaurare.
Clasa ObjectInputStream
Odata ce au fost scrise obiecte si tipuri primitive de date pe un flux, citirea acestora si
reconstruirea obiectelor salvate se va face printr-un flux de intrare de tip
ObjectInputStream. Acesta este de asemenea un flux de procesare si va trebui asociat cu
un flux pentru citirea efectiva a datelor, cum ar fi FileInputStream pentru date salvate
intr-un fisier. Secventa uzuala pentru deserializare este cea de mai jos:
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
JDesktopPane desktop = new JDesktopPane();
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati o fereastra in care sa afisati numerele prime de la 0 la 100 intr-un aranjament de
tip GridLayout
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test {
addElement(2);
findPrimNumbers();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pan);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
import java.util.Vector;
import java.io.;
Queue() {
super();
}
void put(Object o) {
addElement(o);
}
Object get() {
if (isEmpty()) return null;
Object o = firstElement();
removeElement(o);
return o;
}
Object peek() {
if (isEmpty()) return null;
return firstElement();
}
}
System.out.println(theQueue.toString());
}
Vr.17:
1. Folosirea ferestrelor
Pentru a fi afisate pe ecran componentele grafice ale unei aplicatii trebuie plasate pe o
suprafata de afisare (container). Fiecare componenta poate fi continuta doar intr-un
singur container, ada ugarea ei pe o suprafta noua de afisare determinand eliminarea ei
de pe vechiul container pe care fusese plasat˘. Intrucat containerele pot fi incapsulate in
alte containere, o com-ponenta va face parte la un moment dat dintr-o ierarhie. Ra da
cina acestei ierarhii trebuie sa fie un asa numit container de nivel inalt, care este
reprezen-tat de una din clasele JFrame, JDialog sau JApplet. Intrucat de appleturi ne vom
ocupa separat, vom analiza in continuare primele doua clase.
Clasa Window
Clasa Window este rar utilizata in mod direct deoarece permite doar crearea unor ferestre
care nu au chenar si nici bara de meniuri. Este utila atunci cand dorim sa afisam ferestre
care nu interactioneaza cu utilizatorul ci doar ofera anumite informatii.
Metodele mai importante ale clasei Window, care sunt de altfel mostenite de toate
subclasele sale, sunt date de mai jos:
show ; hide; isShowing ; dispose ; pack ; getFocusOwner
Clasa Frame
Este derivata a clasei Window si este folosita pentru crearea de ferestre independente si
functionale, eventual continand o bara de meniuri. Orice aplicatie cu interfata grafica
conttine cel putin o fereastra , cea mai importanta fiind numita si fereastra principal˘.
Constructorii uzuali ai clasei Frame permit crearea unei ferestre cu sau fa ra titlu, initial
invizibila . Pentru ca o fereastra sa devina vizibila se va apela metoda show definita in
superclasa Window.
2.
// Elaborati un Servlet care va sterge din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// inregistrarea cu id-ul 10. Numele si parola de conectare (username: root; password:
1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati un applet, in cadrul caruia, odata cu apasarea click-ului sting la mouse, pointer-
ul
// mouse-ului se va comporta ca un brush ( va colora un cerc (10px) imprejurul punctului
in care
// se afla)
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
addMouseMotionListener(this);
}
Vr.18:
1. Folosirea imaginilor
In AWT este posibila folosirea imaginilor create extern in format gif sau jpeg. Orice
imagine va fi reprezentata ca o instanta a clasei Image. Aceasta nu este o clasa de
componente (nu extinde Component) ci implementeaza obiecte care pot fi desenate pe
suprafata unor componente cu metode specifice unui context grafic pentru componenta
respectiva (similar modului cum se deseneaza o linie sau un cerc).
Afisarea imaginilor
Afisarea unei imagini presupune realizarea urma toarilor doi pasi:
1.Crearea unui obiect de tip Image;
2.Afisarea propriu-zisa intr-un context grafic;
Crearea unui obiect de tip Image se face folosind o imagine dintr-un fisier fie aflat pe
masina pe care se lucreaza , fie aflat la o anumita adresa Web (URL). Metodele pentru
inca rcarea unei imagini dintr-un fisier se ga sesc in clasele Applet si Toolkit, avand insa
aceeasi denumire getImage si urma toarele formate:
Applet Toolkit
getImage(URL url) getImage(URL url)
getImage(URL url, String fisier) getImage(String fisier)
Afisarea unei imagini intr-un context grafic se realizeaza prin intermediul metodei
drawImage din clasa Graphics si, in general, va fi facuta in metoda paint a unei
componente. Cele mai uzuale formate ale metodei sunt:
boolean drawImage(Image img, int x, int y, ImageObserver observer) boolean
drawImage(Image img, int x, int y, Color bgcolor,
ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver
observer)
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor,
ImageObserver observer)
2.
// Elaborati un Servlet care va extrage din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// cimpurile id si nume, si le va afisa in consola. Numele si parola de conectare
(username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
Statement st = con.createStatement();
String sql = ("SELECT * FROM log;");
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2));
}
con.close();
}
}
3.
// Elaborati un program ce va crea o fereastra si prin intermediul unui obiect de tip
java.awt.List va schimba culoarea fundalului
// unui obiect de tip java.awt.Label
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Vr.19:
1. Contextul grafic de desenare
Inainte ca utilizatorul sa poata desena, el trebuie sa obtina un context grafic de desenare
pentru suprafata ca reia ii apartine regiunea pe care se va desena. Un context grafic este,
de fapt, un obiect prin intermediul ca ruia putem controla procesul de desenare a unui
obiect. In general, desenarea se poate face:
pe o portiune de ecran, la imprimanta sau intr-o zona virtuala de memorie.
Un context grafic este specificat prin intermediul unui obiect de tip Graph-ics primit ca
parametru in metodele paint si update. In functie de dispozi-tivul fizic pe care se face
afisarea (ecran, imprimanta , plotter, etc) metodele de desenare au implementa ri interne
diferite, transparente utilizatorului.
Clasa Graphics pune la dispozitie metode pentru:
primitive grafice: desenarea de figuri geometrice, texte si imagini
stabilirea proprieta ¸ilor contextului grafic, adica stabilirea:
– culorii si fontului curente cu care se face desenarea,
– originii coordonatelor suprafetei de desenare,
– suprafetei in care sunt vizibile componentelor desenate,
– modului de desenare.
Proprieta tile contextului grafic
La orice tip de desenare parametrii legati de culoare, font, etc. vor fi specificati pentru
contextul grafic in care se face desenarea si nu vor fi trimisi ca ar-gumente metodelor
respective de desenare. In continuare, enumera m aceste proprieta ti si metodele asociate
lor din clasa Graphics.
Proprietate Metode
2.
// Elaborati un program care va afisa imaginea 'test.jpg', localizata in directoria 'C:/img/'
intr-un obiect
// de tip JFrame cu dimensiunile 400x400 pixeli.
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public LoadImage() {
try {
img = ImageIO.read(new File("C:/img/test.jpg"));
} catch (IOException e) {
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
out.println(max);
out.close();
s.close();
}
Vr.20:
1.
Conceptul de desenare
Un program Java care are interfata grafica cu utilizatorul trebuie sa deseneze pe ecran
toate componentele sale care au o reprezentare vizual˘. Aceasta desenare include
componentele standard folosite in aplicatie precum si cele definite de ca tre programator.
Desenarea componentelor se face automat si este un proces care se executa in urma
toarele situatii:
la afisarea pentru prima data a unei componente;
la operatii de minimizare, maximizare, redimensionare a suprafetei de afisare;
ca ra spuns al unei solicita ri explicite a programului.
Metoda paint
Dupa cum am spus, toate desenele care trebuie sa apara pe o suprafata de afisare se
realizeaza in metoda paint a unei componente. Metoda paint este definita in superclasa
Component insa nu are nici o implementare si, din acest motiv, orice obiect grafic care
doreste sa se deseneze trebuie sa o suprade-fineasca pentru a-si crea propria sa
reprezentare. Componentele standard AWT au deja supradefinita aceasta metoda deci nu
trebuie sa ne preocupe desenarea lor, insa putem modifica reprezentarea lor grafica prin
crearea unei subclase si supradefinirea metodei paint, avand insa grija sa apela m si
metoda superclasei care se ocupa cu desenarea efectiva a componentei.
2.
// Creati un program care sa afle elementul majoritar dintr-un array. Array-ul se va citi
din
// fisierul majoritar.in . In caz ca nu exista un element majoritar se va afisa -1;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
if ( cand < 0 ) {
System.out.println("-1");
} else {
int nr = 0;
for (int i = 0; i < n; i++)
if (elem[i] == cand )
nr++;
if ( nr >= n / 2) {
System.out.println(cand);
} else {
System.out.println("-1");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
3.
// Creati o fereastra in care sa afisati numerele prime de la 0 la 100 intr-un aranjament de
tip GridLayout
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
addElement(2);
findPrimNumbers();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pan);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Vr.21:
1. Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Componentele AWT
Dupa cum am spus deja, toate componentele AWT sunt definte de clase proprii ce se
gasescin pachetul java.awt, clasa Component fiind superclasa abstracta a tuturor acestor
clase.
Button - butoane cu eticheta formata dintr-un text pe o singura linie;
Canvas - suprafata pentru desenare;
Checkbox - componenta ce poate avea doua sta ri; mai multe obiecte de acest tip
pot fi grupate folosind clasa CheckBoxGroup;
Choice - liste in care doar elementul selectat este vizibil si care se deschid la apa
sarea lor;
Container - superclasa tuturor suprafetelor de afisare (vezi ”Suprafete de
afisare”);
Label - etichete simple ce pot contine o singura linie de text needitabil;
List - liste cu selectie simpla sau multipla ;
Scrollbar - bare de defilare orizontale sau verticale;
TextComponent - superclasa componentelor pentru editarea textu-lui: TextField
(pe o singura linie) si TextArea (pe mai multe linii).
2.
// Creati un program java care sa adauge intr-un obiect de tip JFrame 2 ferestre interne.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati o clasa care va porni 2 fire de executie, unul sa afiseze numerele pare de la 0 la
10, iar
// celalalt de cele impare de la 0 la 10.
t1.start();
t2.start();
}
}
}
2. Написать программу, которая выводит в консоли список файлов и
подпапок, находящихся в данной папке. Использовать в программе
метод list().
Vr.22:
1.
Crearea unui vector presupune realizarea urma toarelor etape:
•Declararea vectorului - Pentru a putea utiliza un vector trebuie,inainte de toate, sa-l
declara m. Acest lucru se face prin expresii de forma:
Tip[] numeVector; sau
Tip numeVector[];
ca in exemplele de mai jos:
int[] intregi; String adrese[];
•Instantierea
Declararea unui vector nu implica si alocarea memoriei necesare pentru retinerea
elementelor. Operatiunea de alocare a memoriei, numita si instantierea vectorului, se
realizeaza intotdeauna prin intermediul op-eratorului new. Instantierea unui vector se va
face printr-o expresie de genul:
numeVector = new Tip[nrElemente];
•Initializarea (optional) Dupa declararea unui vector, acesta poate fi initializat, adica
elementele sale pot primi niste valori initiale, evident daca este cazul pentru asa ceva. In
acest caz instantierea nu mai trebuie facuta explicit, alocarea memoriei fa candu-se
automat in functie de numa rul de elemente cu care se initializeaza vectorul.
String culori[] = {"Rosu", "Galben", "Verde"}; int []factorial = {1, 1, 2, 6, 24, 120};
Primul indice al unui vector este 0, deci pozitiile unui vector cu n ele-mente vor fi
cuprinse intre 0 si n − 1. Nu sunt permise constructii de genul Tip
numeVector[nrElemente], alocarea memoriei fa candu-se doar prin in-termediul
opearatorului new.
int v[10]; //ilegal
int v[] = new int[10]; //correct
2.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati un applet care va afisa tabela inmultirii la 2 (de la 1..10). Textul va fi afisat
// in coloana printr-un ciclu while.
import java.applet.Applet;
import java.awt.Graphics;
import java.io.;
public class ReadOnly {
public static void main(String[] a) throws IOException {
if (!f.createNewFile()) {
System.out.println(Can't create new file.);
return;
}
if (!f.canWrite()) {
System.out.println(Can't write new file!);
return;
}
if (!f.setReadOnly()) {
System.out.println(Grrr! Can't set file read-only.);
return;
}
if (f.canWrite()) {
System.out.println(Most immutable, captain!);
System.out.println(But it still says canWrite() after setReadOnly);
return;
} else {
System.out.println(Logical, captain!);
System.out.println(canWrite() correctly returns false after setReadOnly);
}
}
}
Vr.23:
1. Ce este un fir de executie?
Definitie:
Un fir de executie este o succesiune sceventiala de instructiuni care se executa in cadrul
unui proces.
Un fir de executie este similar unui proces secvential, in sensul ca are un inceput, o
secventa de executie si un sfarsit. Diferenta dintre un fir de executie si un proces consta
in faptul ca un fir de executie nu poate rula independent ci trebuie sa ruleze in cadrul
unui proces.
In aceasta stare firul este ”vid”, el nu are alocate nici un fel de resurse sis-tem si singura
operatiune pe care o putem executa asupra lui este lansarea in executie, prin metoda start.
Apelul orica rei alte metodein afara de start
nu are nici un sens si va provoca o exceptie de tipul IllegalThreadStateException.
Starea ”Runnable”
Dupa apelul metodei start un fir va trece in starea ”Runnable”, adica va fi in executie.
fir.start();
//fir se gaseste in starea "Runnable"
Un fir aflat in starea ”Runnable” nu inseamna neapa rat ca se ga seste efectiv in executie,
adica instructiunile sale sunt interpretate de procesor. Acest lucru se ıntampla din cauza
ca majoritatea calculatoarelor au un singur procesor iar acesta nu poate rula simultan
toate firele de executie care se gasesc in starea ”Runnable”. Pentru a rezolva aceasta
problema exista o planificare care sa partajeze dinamic si corect procesorul intre toate
firele de executie care sunt in starea ”Runnable”. Asadar, un fir care ”ruleaza ” poate sa
-si astepte de fapt randul la procesor.
Starea ”Dead”
Este starea in care ajunge un fir de executie la terminarea sa. Un fir nu poate fi oprit din
program printr-o anumita metoda , ci trebuie sa se termine in mod natural laincheierea
metodei run pe care o executa . Spre deosebire de versiunile curente ale limbajului Java,
in versiunile mai vechi exista metoda stop a clasei Thread care termina fortat un fir de
executie, insa aceasta a fost eliminata din motive de securitate. Asadar, un fir de executie
trebuie sa -si ”aranjeze” singur propria sa ”moarte”.
2.
// Creati o fereastra in care sa afisati numerele prime de la 0 la 100 intr-un aranjament de
tip GridLayout
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
addElement(2);
findPrimNumbers();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pan);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
import java.util.Arrays;
Vr.24:
1. Ce este o interfata ?
Definitie :
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
O interfata Java defineste un set de metode dar nu specifica nici o implementare pentru
ele. O clasa care implementeaza o interfata trebuie obligatoriu sa specifice implementari
pentru toate metodele interfetei, supunandu-se asadar unui anumit comportament.
O clasa poate implementa oricate interfete sau poate sa nu implementeze nici una.
In cazul in care o clasa implementeaza o anumita interfata, atunci trebuie obligatoriu sa
specifice cod pentru toate metodele interfetei. Din acest motiv, odata creata si folosita la
implementarea unor clase, o interfata nu mai trebuie modificata, in sensul ca adaugarea
unor metode noi sau schimbarea signaturii metodelor existente vor duce la erori in
compilarea claselor care o implementeaza. Evident, o clasa poate avea si alte metode si
variabile membre in afara de cele definite in interfata.
O interfata nu este o clasa, dar orice referinta de tip interfata poate primi ca valoare o
referinta la un obiect al unei clase ce implementeaza interfata respectiva. Din acest motiv,
interfetele pot fi privite ca tipuri de date si vom spune adesea ca un obiect are tipul X,
unde X este o interfata, dacacesta este o instanta a unei clase ce implementeaza interfata
X.
Implementarea unei interfete poate sa fie si o clasa abstracta.
2.
// Elaborati un Servlet care va introduce in tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// o inregistrare. Numele si parola de conectare (username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Elaborati un program care sa gaseasca String-ul cu cel mai mare numar de caractere si
nu contine
// cifre. Fiecare sir de caractere se va citi din fisier (input.txt) unde String-urile vor fi
plasate
// fiecare pe un rind nou. String-ul gasit va fi scris intr-un fisier (output.txt).
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
public class ArrayMaxString {
out.print(maxLengthStr);
out.close();
in.close();
}
Vr.25:
1.
Serializarea obiectelor
Serializarea obiectelor se realizeaza prin intermediul fluxurilor definite de clasele
ObjectOutputStream (pentru salvare) si ObjectInputStream(pentru restaurare).
Acestea sunt fluxuri de procesare, ceea ce inseamna ca vor fi folosite impreuna cu alte
fluxuri pentru scrierea/citirea efectiva a datelor pe mediul extern pe care va fi salvat, sau
de pe care va fi restaurat un obiect serializat.
Mecanismul implicit de serializare a unui obiect va salva numele clasei obiectului,
signatura clasei si valorile tuturor campurile serializabile ale obiec-tului. Referintele la
alte obiecte serializabile din cadrul obiectului curent vor duce automat la serializarea
acestora iar referintele multiple ca tre un acelasi obiect sunt codificate utilizand un
algoritm care sa poata reface ”reteaua de obiecte” la aceeasi stare ca atunci cand obiectul
original a fost salvat.
Clasele ObjectInputStream si ObjectOutputStream implementeaza interfetele
ObjectInput, respectiv ObjectOutput care extind DataInput, respectiv DataOutput, ceea
ce inseamna ca , pe langa metodele dedicate serializa rii obiectelor, vor
exista si metode pentru scrierea/citirea datelor primitive si a sirurilor de caractere.
Metodele pentru serializarea obiectelor sunt:
• writeObject, pentru scriere si
• readObject, pentru restaurare.
Clasa ObjectInputStream
Odata ce au fost scrise obiecte si tipuri primitive de date pe un flux, citirea acestora si
reconstruirea obiectelor salvate se va face printr-un flux de intrare de tip
ObjectInputStream. Acesta este de asemenea un flux de procesare si va trebui asociat cu
un flux pentru citirea efectiva a datelor, cum ar fi FileInputStream pentru date salvate
intr-un fisier. Secventa uzuala pentru deserializare este cea de mai jos:
2.
// Elaborati un Servlet care va extrage din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// cimpurile id si nume, si le va afisa in consola. Numele si parola de conectare
(username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
Statement st = con.createStatement();
String sql = ("SELECT * FROM log;");
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2));
}
con.close();
}
}
3.
// Creati un program care va afisa maximul a trei numere cu ajutorul operatorului ternar.
// In caz ca numerele sunt egale se va arunca o noua exceptie (MyException) cu mesajul
"numerele sunt egale"
// Numerele se vor citi de la tastatura.
import java.util.Scanner;
System.out.println(max);
} catch (MyException e) {
e.printStackTrace();
}
}
}
Vr.26:
1.
Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Clasa Checkbox
Un obiect de tip Checkbox (comutator) reprezinta o componenta care se poate ga si in
doua sta ri: ”selectata ” sau ”neselectata ” (on/off). Actiunea utilizatorului asupra unui
comutator il trece pe acesta in starea complemen-tara celei in care se ga sea. Este folosit
pentru a prelua o anumita optiune de la utilizator.
Clasa Choice
Un obiect de tip Choice defineste o lista de optiuni din care utilizatorul poate selecta una
singura . La un moment dat, din intreaga lista doar o sin-gura optiune este vizibila , cea
selectata in momentul curent. O componenta Choice este insotita de un buton etichetat
cu o sageata verticala la apa sarea ca ruia este afisata intreaga sa lista de elemente, pentru
ca utilizatorul sa poata selecta o anumita optiune.
2.
// Elaborati un program care va afisa imaginea 'test.jpg', localizata in directoria 'C:/img/'
intr-un obiect
// de tip JFrame cu dimensiunile 400x400 pixeli.
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public LoadImage() {
try {
img = ImageIO.read(new File("C:/img/test.jpg"));
} catch (IOException e) {
}
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
if ( cand < 0 ) {
System.out.println("-1");
} else {
int nr = 0;
for (int i = 0; i < n; i++)
if (elem[i] == cand )
nr++;
if ( nr >= n / 2) {
System.out.println(cand);
} else {
System.out.println("-1");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Vr.27:
1.
S¸iruri de caractere
In Java, un sir de caractere poate fi reprezentat printr-un vector format din elemente de tip
char, un obiect de tip String sau un obiect de tip StringBuffer.
Daca un sir de caractere este constant (nu se doreste schimbarea continutului sa pe
parcursul executiei programului) atunci el va fi declarat de tipul String, altfel va fi
declarat de tip StringBuffer. Diferenta principala intre aceste clase este ca StringBuffer
pune la dispozitie metode pentru modificarea continutului sirului, cum ar fi: append,
insert, delete, reverse.
Uzual, cea mai folosita modalitate de a lucra cu siruri este prin intermediul clasei
String, care are si unele particularita ti fata de restul claselor menite sa simplifice cat
mai mult folosirea sirurilor de caractere. Clasa StringBuffer va fi utilizata predominant in
aplicatii dedicate procesa rii textelor cum ar fi editoarele de texte.
Exemple echivalente de declarare a unui sir:
String s = "abc";
String s = new String("abc"); char data[] = {’a’, ’b’, ’c’}; String s = new String(data);
Observati prima varianta de declarare a sirului s din exemplul de mai sus - de altfel,
cea mai folosita - care prezinta o particularitate a clasei String fata de restul claselor
Java referitoare la instantierea obiectelor sale.
Concatenarea sirurilor de caractere se face prin intermediul operatorului+ sau, in
cazul sirurilor de tip StringBuffer, folosind metoda append.
String s1 = "abc" + "xyz"; String s2 = "123";
String s3 = s1 + s2;
2.
// Creati un program java care sa adauge intr-un obiect de tip JFrame 2 ferestre interne.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati un applet, in cadrul caruia, odata cu apasarea click-ului sting la mouse, pointer-
ul
// mouse-ului se va comporta ca un brush ( va colora un cerc (10px) imprejurul punctului
in care
// se afla)
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
addMouseMotionListener(this);
}
Vr.28:
1. Ce este o interfata ?
Definitie :
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
O interfata Java defineste un set de metode dar nu specifica nici o implementare
pentru ele. O clasa care implementeaza o interfata trebuie obligatoriu sa specifice
implementari pentru toate metodele interfetei, supunandu-se asadar unui anumit
comportament.
Interfata FilenameFilter
Instantele claselor ce implementeaza aceasta interfata sunt folosite pentru a crea filtre
pentru fisiere si sunt primite ca argumente de metode care listeaza continutul unui
director, cum ar fi metoda list a clasei File.
Asadar, putem spune ca metoda list primeste ca argument o alta functie care specifica
daca un fisier va fi returnat sau nu (criteriul de filtrare).
Interfata FilenameFilter are o singura metoda : accept care specifica criteriul de
filtrare si anume, testeaza daca numele fisierului primit ca para-metru indeplineste
conditiile dorite de noi.
Definitia interfetei este:
public interface FilenameFilter {
public boolean accept(File dir, String numeFisier);
}
Asadar, orice clasa de specificare a unui filtru care implementeza interfata
FilenameFilter trebuie sa implementeze metoda accept a acestei interfete. Aceste clase
mai pot avea si alte metode, de exemplu un constructor care sa primeasca criteriul de
filtrare.
2.
// Elaborati un Servlet care va introduce in tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// o inregistrare. Numele si parola de conectare (username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati o fereastra in care sa afisati numerele prime de la 0 la 100 intr-un aranjament de
tip GridLayout
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test {
addElement(2);
findPrimNumbers();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pan);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Vr.29:
1. Ce sunt fluxurile?
Definitii:
Un flux este un canal de comunicatie unidirectional intre doua procese.
Un proces care descrie o sursa externa de date se numeste proces produca tor. Un
proces care descrie o destinatie externa pentru date se numeste proces consumator.
Un flux care citeste date se numeste flux de intrare. Un flux care scrie date se numeste
flux de iesire.
Clasificarea fluxurilor
Exista trei tipuri de clasificare a fluxurilor:
•Dupa directia canalului de comunicatie deschis fluxurile se impart in:
– fluxuri de intrare (pentru citirea datelor)
– fluxuri de iesire (pentru scrierea datelor)
2.
// Elaborati un Servlet care va extrage din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// cimpurile id si nume, si le va afisa in consola. Numele si parola de conectare
(username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
Statement st = con.createStatement();
String sql = ("SELECT * FROM log;");
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2));
}
con.close();
}
}
3.
// Elaborati un program ce va crea o fereastra si prin intermediul unui obiect de tip
java.awt.List va schimba culoarea fundalului
// unui obiect de tip java.awt.Label
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
MOD 30:
1. Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Componentele AWT
Dupa cum am spus deja, toate componentele AWT sunt definte de clase proprii ce se
gasescin pachetul java.awt, clasa Component fiind superclasa abstracta a tuturor acestor
clase.
Button - butoane cu eticheta formata dintr-un text pe o singura linie;
Canvas - suprafata pentru desenare;
Checkbox - componenta ce poate avea doua sta ri; mai multe obiecte de acest tip
pot fi grupate folosind clasa CheckBoxGroup;
Choice - liste in care doar elementul selectat este vizibil si care se deschid la apa
sarea lor;
Container - superclasa tuturor suprafetelor de afisare (vezi ”Suprafete de
afisare”);
Label - etichete simple ce pot contine o singura linie de text needitabil;
List - liste cu selectie simpla sau multipla ;
Scrollbar - bare de defilare orizontale sau verticale;
TextComponent - superclasa componentelor pentru editarea textu-lui: TextField
(pe o singura linie) si TextArea (pe mai multe linii).
2.
// Elaborati un Servlet care va sterge din tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// inregistrarea cu id-ul 10. Numele si parola de conectare (username: root; password:
1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Creati o clasa care va porni 2 fire de executie, unul sa afiseze numerele pare de la 0 la
10, iar
// celalalt de cele impare de la 0 la 10.
t1.start();
t2.start();
}
}
}
MOD 31
1.
Serializarea obiectelor
Serializarea obiectelor se realizeaza prin intermediul fluxurilor definite de clasele
ObjectOutputStream (pentru salvare) si ObjectInputStream(pentru restaurare).
Acestea sunt fluxuri de procesare, ceea ce inseamna ca vor fi folosite impreuna cu alte
fluxuri pentru scrierea/citirea efectiva a datelor pe mediul extern pe care va fi salvat, sau
de pe care va fi restaurat un obiect serializat.
Mecanismul implicit de serializare a unui obiect va salva numele clasei obiectului,
signatura clasei si valorile tuturor campurile serializabile ale obiec-tului. Referintele la
alte obiecte serializabile din cadrul obiectului curent vor duce automat la serializarea
acestora iar referintele multiple ca tre un acelasi obiect sunt codificate utilizand un
algoritm care sa poata reface ”reteaua de obiecte” la aceeasi stare ca atunci cand obiectul
original a fost salvat.
Clasele ObjectInputStream si ObjectOutputStream implementeaza interfetele
ObjectInput, respectiv ObjectOutput care extind DataInput, respectiv DataOutput, ceea
ce inseamna ca , pe langa metodele dedicate serializa rii obiectelor, vor
exista si metode pentru scrierea/citirea datelor primitive si a sirurilor de caractere.
Metodele pentru serializarea obiectelor sunt:
• writeObject, pentru scriere si
• readObject, pentru restaurare.
Clasa ObjectOutputStream
Scrierea obiectelor pe un flux de iesire este un proces extrem de simplu, secventa uzuala
fiind cea de mai jos:
ObjectOutputStream out = new ObjectOutputStream(fluxPrimitiv);
out.writeObject(referintaObiect);
out.flush();
fluxPrimitiv.close();
2.
// Creati un program java care sa adauge intr-un obiect de tip JFrame 2 ferestre interne.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
public InnerFrame() {
super(" Document # " + (++n), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setLocation(x * n, y * n);
setSize(new Dimension(200, 100));
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Creati un applet care va afisa tabela inmultirii la 2 (de la 1..10). Textul va fi afisat
// in coloana printr-un ciclu while.
import java.applet.Applet;
import java.awt.Graphics;
}
MOD 32:
1. Modelul AWT
Pachetul care ofera componente AWT este java.awt.
Obiectele grafice sunt derivate din Component, cu exceptia meniurilor care descind din
clasa MenuComponent. Asadar, prin notiunea de componenta vom intelege in continuare
orice obiect care poate avea o reprezentare grafica si care poate interactiona cu
utilizatorul. Exemple de componente sunt fere-strele, butoanele, listele, bare de defilare,
etc. Toate componentele AWT sunt definte de clase proprii ce se gasesc in pachetul
java.awt, clasa Component fiind superclasa abstracta a tuturor acestor clase.
Clasa Label
Un obiect de tip Label (eticheta ) reprezinta o componenta pentru plasarea unui text pe o
suprafata de afisare. O eticheta este formata dintr-o singura linie de text static ce nu
poate fi modificat de ca tre utilizator, dar poate fi modificat din program.
Clasa Button
Un obiect de tip Button reprezinta o componenta pentru plasarea unui bu-ton etichetat
pe o suprafata de afisare. Textul etichetei este format dintr-o singura linie.
2.
// Elaborati un Servlet care va introduce in tabelul `test(id, nume, prenume, info)` al bazei
de date `TestDB`
// o inregistrare. Numele si parola de conectare (username: root; password: 1234)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
statement.execute();
con.close();
}
}
3.
// Elaborati un program care va contine o metoda ce poate primi ca parametri oricite
valori de tip intreg
// si returneaza maximul dintre acesta care va fi afisat in consola.
import java.util.Arrays;
MOD 33:
1.
Definitia Interfetei
O interfata este o colectie de metode fara implementare si declaratii de constante.
Interfetele permit, alaturi de clase, definirea unor noi tipuri de date.
2.
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
fin1.setVisible(true);
fin2.setVisible(true);
desktop.add(fin1);
desktop.add(fin2);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(desktop);
fin2.moveToFront();
setLocationRelativeTo(null);
setVisible(true);
}
}
class InnerFrameTest {
public static void main(String args[]) {
new MainFrame(" Test ferestre interne ");
}
}
3.
// Alcatuiti un program care va calcula maximul dintr-un sir numeric. Datele se vor citi
dintr-un fisier (input.txt)
// in care pe prima pozitia va fi numarul 'n' de elemente urmat de n numere intregi.
Maximul va fi
// afisat intr-un alt fisier (output.txt).
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
out.println(max);
out.close();
s.close();
}
}