PROBLEME SEMINAR
TEHNICI AVANSATE DE PROGRAMARE
/* fisirul Salut.java */
import java.util.*;
public class Salut
strMesaj+="
"+strUtilizator+"!";
System.out.println(strMesaj);
}
}
Scopul acestei aplicatii este acela de a afisa mesajul:
Buna ziua nume!
Numele utilizatorului se transmite in linia de comanda (la lans 414b113e area in executie a programului). Daca numele lipseste, se va considera implicit numele Ion.
Scrierea acestui program se poate realiza folosind orice editor de text, spre exemplu Notepad din Windows. Din considerente de productivitate se recomanda insa utilizarea unui mediu de dezvoltare, care permite pe langa corectii automate de cod si compilarea si executarea automata a aplicatiei.
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Tipuri.java).
/**
* Clasa Tipuri se foloseste pentru a demonstra
* tipurile primitive din Java
*
* @version 1.0
* @author Elena Dragan
*/
public class Tipuri
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Operatii.java).
import java.io.*;
/**
* Clasa Operatii se foloseste pentru a demonstra
* operatorii si operatiile de I/O la consola
*
* @version 1.0
* @author Elena Dragan
*/
public class Operatii
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul InCond.java).
/**
* Clasa InCond - Instructiuni conditionale
*
* @version 1.0
* @author Elena Dragan
*/
public class InCond
min = (nota1<nota2) ? nota1 : nota2;
System.out.println("Nota minima: "+min);
switch (nota1)
System.out.println("Calificativul pentru nota1 este "+mesaj);
}
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul InCiclic.java).
/**
* InCiclic - test Instructiuni ciclice
*
* @version 1.0
* @author Elena Dragan
*/
public class InCiclic
// echivalent
//while (i<=5)
// System.out.println("i = "+i++);
System.out.println("Afisarea numerelor impare <5 prin do .. while:");
i=1; // secventa de initializare
do while (i++<=5);
}
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Factorial.java).
/**
* Factorial - Subrograme recursive. Calculul factorial(n)
= 1*2*3*..*n
* Formula este:
* factorial(0)=1
* factorial(k) = k*factorial(k-1)
*
* @version 1.0
* @author Elena Dragan
*/
public class Factorial
else
return 1;
}
public static void main(String args[])
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Tablouri.java).
/**
* Clasa Tablouri - inmultirea de matrici bidimensionale DIM*DIM
*
*/
public class Tablouri
}
public static void genereazaElMat( int m[][] )
public static int[][] inmultesteMat( int a[][], int b[][])
else
dim = a[0].length;
for ( i=0; i<a.length; i++)
for ( j=0 ; j<b[i].length; j++)
return c;
}
public static void main(String args[])
}
........
Pentru exemplificarea conceptului de clasa se considera modelul unei entitati "Persoana":
/**
* Clasa Persoana descrie datele si comportamentul unei persoane
*/
public class Persoana
/** Constructor al clasei Persoana - doar numele
* @param numePers numele persoanei
* @param prenumePers prenumele persoanei
*/
public Persoana( String numePers,
String prenumePers )
/** Metoda afiseazaInformatii - afiseaza pe consola
informatiile despre persoana
*/
void afiseazaInformatii()
}
......
/**
* Clasa Persoana descrie datele si comportamentul unei persoane
*/
public class Persoana
/** Metoda getVarsta - permite aflarea varstei
* @return varsta persoanei in ani impliniti
*/
public int getVarsta()
/** Metoda getInaltimea - permite aflarea inaltimii
* @return inaltimea persoanei in cm
*/
public double getInaltimea()
/** Metoda getSex - permite aflarea sexului
* @return sexul persoanei sub forma de sir de caractere
*/
public String getSex()
return s;
}
/** Metoda setNume - permite schimbarea numelui dupa
casatorie
* se aplica doar pentru sex='F'
* @param numeNou numele dupa schimbare
*/
public void setNume(String numeNou)
/** Metoda setVarsta - permite schimbarea varstei
* @param varstaNoua varsta noua
*/
public void setVarsta(int
varstaNoua)
/** Metoda setInaltimea - permite schimbarea inaltimii
persoanei
* @param inaltimeNoua inaltimea noua
*/
public void setInaltimea(double
inaltimeaNoua)
/** Metoda afiseazaInformatii - afiseaza pe consola
informatiile despre persoana
*/
void afiseazaInformatii()
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Persoana.java).
public class Persoana
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Student.java).
/**
* Clasa Student - derivata din clasa Persoana
*
*/
public class Student extends Persoana
public Student(String numePers, String prenumePers)
public void afiseazaInformatii()
public static void main(String args[])
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Figuri.java).
/**
* Clasa Figura modeleaza conceptul de figura geometrica
*/
abstract class Figura
public Figura(double x0, double y0)
public abstract double aria(); // metoda
abstracta
public abstract double perimetru(); //
metoda abstracta
public String toString()
public void muta(double x0, double y0 )
}
/**
* Clasa Dreptunghi modeleaza un dreptunghi
*/
class Dreptunghi extends Figura
public Dreptunghi(double lung, double lat)
public double aria()
public double perimetru()
public String toString()
}
/**
* Clasa Patrat modeleaza un dreptunghi cu laturile egale
*/
class Patrat extends Dreptunghi
public Patrat(double latura)
public String toString()
}
/**
* Clasa Cerc modeleaza un cerc
*/
class Cerc extends Figura
public Cerc(double r)
public double aria()
public double perimetru()
public String toString()
}
/**
* Clasa Figuri exemplifica utilizarea ierarhiei de obiecte grafice
*/
public class Figuri
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Interfete.java).
import java.io.*;
interface Intreruptibil
abstract class Aparat
public void porneste()
public void opreste()
protected String aflaStare()
abstract public String stare();
}
abstract class Electronic extends Aparat
}
abstract class Electric extends Aparat
}
class Fax extends Electronic
public String stare()
}
class Calculator extends Electronic
public String stare()
}
class Monitor extends Electronic implements Intreruptibil
// metode din interfata Intreruptibil
public String opresteSeara()
public String pornesteDimineata()
public String stare()
}
class Radio extends Electronic implements Intreruptibil
// metode din interfata Intreruptibil
public String opresteSeara()
public String pornesteDimineata()
public String stare()
}
class Bec extends Electric implements Intreruptibil
// metode din interfata Intreruptibil
public String opresteSeara()
public String pornesteDimineata()
public String stare()
}
class Radiator extends Electric
public String stare()
}
public class Interfete
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Exceptii.java).
import java.io.*;
public class Exceptii
public static int citNumar() catch
(IOException e)
catch(NumberFormatException e)
} while (err);
return nr;
}
private void citesteNumere() throws IndexOutOfBoundsException
}
public void citeste()
catch(IndexOutOfBoundsException e)
}
public void afiseaza() throws IndexOutOfBoundsException
}
public static void main(String args[])
catch(IndexOutOfBoundsException e)
}
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Citire.java).
import java.io.*;
import java.net.*;
/** clasa Citire - extrage referintele dintr-o a unui server Web
*
*/
class Citire
flux_intrare.close();
}
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati
programul urmator (fisierul Copy.java).
El are ca si scop crearea unei copii a unui fisier binar
de intrare.
import java.io.*;
/** Copy - realizeaza o copie a fisierului de intrare
* cu numele in.jpg si o scrie in fisierul out.jpg
*/
public class Copy
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Stiva.java).
import java.util.*;
/**
* Stiva - clasa pentru exemplificarea implementarii unei stive
* de numere intregi
* LIFO (last in - first out (primul intrat, ultimul extras))
*
* @version 1.0
* @author Elena Dragan
*/
class Stiva extends LinkedList
public void adauga(int nr)
public void afiseaza()
public Integer extrage()
public static void main(String args[])
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul MultimeAnimale.java).
import java.util.*;
/**
* MultimeAnimale - clasa pentru exemplificarea implementarii unei
* multimi de animale
*
* @version 1.0
* @author Elena Dragan
*/
class MultimeAnimale extends HashSet
public void adauga(String animal)
public void afiseaza()
public void afiseazaOrdonat()
public static void main(String args[])
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul MultimeAnimale1.java).
import java.util.*;
/**
* MultimeAnimale1 - clasa pentru exemplificarea implementarii unei
* multimi de animale parcursa printr-un iterator
*
* @version 1.0
* @author Elena Dragan
*/
class MultimeAnimale1 extends HashSet
System.out.println(" }");
}
...
}
Activitate propusa pentru laborator(acasa):
Compilati si rulati programul urmator (fisierul Dictionar.java).
import java.util.*;
import java.io.*;
/**
* Dictionar - clasa pentru exemplificarea implementarii unei
* multimi de tip map care asociaza cuvinte de explicatiile lor
*
* @version 1.0 03 Apr 2003
* @author Elena Dragan
*/
public class Dictionar extends TreeMap
public void adaugaCuvant(String cuvant, String explicatie)
public String cautaCuvant(String cuvant)
public void afisDictionar()
public static void main(String args[]) throws Exception
break;
case
'c': case 'C':
System.out.println("Cuvant
cautat:");
linie
= fluxIn.readLine();
if(
linie.length()>1)
break;
case
'l': case 'L':
System.out.println("Afiseaza:");
dict.afisDictionar();
break;
}
} while(raspuns!='e' &&
raspuns!='E');
}
}
Activitate propusa pentru laborator(acasa):
Studiati conventia folosita la scrierea unui program demonstrativ de la firma Java (fisierul CodeExemple.java).
*
* #)Blah.java 1.82 99/03/18
*
* Copyright (c) 1994-1999 Sun Microsystems, Inc.
*
* All rights reserved.
*
* This software is the confidential and proprietary information of Sun
* Microsystems, Inc. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Sun.
*/
package java.blah;
import java.blah.blahdy.BlahBlah;
/**
* Class description goes here.
*
* @version 1.82
* @author Firstname Lastname
*/
public class Blah extends SomeClass
/**
* ...method doSomething documentation comment...
*/
public void doSomething()
/**
* ...method doSomethingElse documentation comment...
* @param someParam description
*/
public void doSomethingElse(Object
someParam)
}
|