Microsoft Word _POO_Lab_1_Modificari_v01.htm

Documente similare
Programarea şi utilizarea calculatoarelor

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

Microsoft Word - CarteC.doc

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Laborator 3

Ingineria Sistemelor de Programare

Paradigme de Programare

PROGRAMARE ORIENTATA PE OBIECTE

Procesarea de imagini folosind programarea paralela. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte l

PROGRAMARE OBIECT-ORIENTATA LABORATOR 1 INTRODUCERE IN CLASE SI OBIECTE Introducere teoretica Prin intermediul unei Clase ne dorim sa construim tipuri

Top

Object Oriented Programming

Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Ob

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

SUBPROGRAME

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Declararea variabilelor

tehnologii web

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Lucrarea 10

Ingineria Sistemelor de Programare

E_d_Informatica_sp_MI_2015_bar_02_LRO

Limbaje de Programare Curs 5 – Siruri de caractere

Limbaje de Programare Curs 8 – Fisiere

Programarea şi utilizarea calculatoarelor

Proiectarea Sistemelor Software Complexe

Gestionarea I/E

Lucrarea nr. 9 - Liste dublu înlănţuite Breviar teoretic În cadrul elementelor studiate anterior s-a putut observa utilitatea listelor simplu înlănuit

Laborator Activities În sistemul Android activitățile reprezintă echivalentul ferestrelor din Windows, fiind clase care extind clasa Activity. Spre de

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Microsoft Word - lab4.doc

PPSD

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Lucrarea nr. 4 - Algoritmi de sortare şi ordonare Breviar teoretic Un algoritm de sortare este o metoda prin care se aranjează elementele unui tablou

CURS

Microsoft Word - 2 ES RO.doc

Introducere în limbajul JavaScript

proiectarea bazelor de date

E_d_Informatica_sp_SN_2014_bar_10_LRO

Paradigme de programare

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

L7

Tema laborator TS.NET 2019 Vom simula (partial, in scop didactic) activitatea unui service auto. Pentru aceasta vom considera urmatoarele tipuri: Clie

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Microsoft Word - Laboratorul 3.doc

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Limbaje de programare. Laborator Clasa, obiect, abstractizare Clasa : descrie tipul obiectelor dintr-un program; poate fi asociată cu un şablon

Microsoft Word - PCLP2_Curs_4_2019.doc

A

Lab6LCD

Slide 1

Programarea şi utilizarea calculatoarelor

Gestiunea serviciilor de recuperare a sănătăţii în sanatorii şi preventorii

Slide 1

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Raportarea serviciilor de dializă la nivel CNAS

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java Interfaţa Iterator Interfaţa C

PowerPoint-Präsentation

Subiectul 1

Controlerul LCD

LUCRAREA NR

Laborator 10 - Paradigme de Programare Corutine - suport nativ pentru paralelism în Kotlin Înainte de a trece la realizarea unei aplicații utilizând c

Laborator 5 - Paradigme de Programare

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

Concepte de bază ale Tehnologiei Informației

Instructiuni pt. depunerea declaratiei A4200 Declaratia A4200 se construieste pornind de la o colectie de fisiere XML, reprezentand fiecare o zi fisca

PHP (II)

Slide 1

Microsoft Word - 4-Interfete paralele.doc

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Aggregating Data

Laborator02

Microsoft Word - Curs 7 - JavaScript.doc

Microsoft Word - CarteC.doc

Metode avansate de gestiune a documentelor și a sistemelor de calcul - LABORATOR 1 -

Microsoft Word - O problema cu bits.doc

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Microsoft Word - Manual-Utilizare-Euro-100T.doc

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 3. Achizitionarea domeniilor web si a

Informatică aplicată TEST GRILA TEST GRILĂ - REZOLVAT 1.Structura de principiu a unui sistem de calcul contine urmatoarele componente principale: A. u

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Microsoft Word - c6.doc

A.E.F. - suport laborator nr.10 sem.ii Analiza stării de contact între elemente 3D În acest laborator sunt atinse următoarele aspecte: analiza contact

9. Design patterns - Singleton, Factory, Observer Scopul acestui curs este familiarizarea cu folosirea unor pattern-uri des întâlnite în design-ul atâ

REGULAMENTUL OFICIAL AL CAMPANIEI PROMOTIONALE BEDROOM CE SA VA DESFASURA IN PERIOADA SECŢIUNEA 1. ORGANIZATOR Organizatorul cam

Evaluarea unităţilor de dializă publice si private

Transcriere:

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm POO Laborator Modificarea programelor Java. Studiu de caz: programul Salut.java. Varianta care utilizeaza un argument al programului si o variabila locala O prima varianta de program, SalutPrimulArgument.java, utilizeaza un argument dat programului de catre utilizator, la lansare (pentru a pasa programului numele care trebuie salutat), si o variabila locala. 0 public class SalutPrimulArgument { * @param args Lista argumentelor programului. public static void main (String[] args) { // Variabila locala String variabilalocala = "Salut "; // Utilizarea unui argument si al unei variabile locale // Concatenare de siruri de caractere System.out.println(variabilaLocala + args[0]); Argumentele sunt furnizate de catre utilizator la lansarea programelor in executie din linia de comanda, sub forma: directorcurent> java <NumeClasa> <argumente program java> Argumentele sunt despartite prin spatii, si sunt accesate in interiorul programului sub forma de siruri de caractere (obiecte ale clasei String). Daca se doreste ca mai multe cuvinte sa formeze un singur argument, acestea sunt plasate intre ghilimele. In cazul clasei SalutPrimulArgument, primul argument (args[0], elementul de index 0 al tabloului argumentelor) va fi numele utilizatorului, programul urmand sa il salute pe utilizator. Daca utilizatorul foloseste comanda: directorcurent> java SalutPrimulArgument Nick efectul este: Salut Nick Acelasi efect se obtine daca utilizatorul foloseste comanda: directorcurent> java SalutPrimulArgument Nick Name Pentru a se obtine efectul: Salut Nick Name utilizatorul trebuie sa foloseasca comanda: directorcurent> java SalutPrimulArgument "Nick Name"

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm Programul foloseste o variabila locala (numita variabilalocala) pentru stocarea unei parti din mesajul catre utilizator ("Salut "). Variabilele locale sunt acele variabile declarate in interiorul blocurilor de cod (cuprinse intre acolade), sunt create in momentul declararii lor si sunt accesibile din locul declararii si pana la sfarsitul blocului de cod in care au fost declarate (pentru variabilele referinta in momentul declararii este creata doar referinta, obiectul referit fiind creat dinamic cu new). Concatenarea sirurilor de caractere variabilalocala si args[0] este realizata cu ajutorul operatorului "+".. Varianta care citeste consola standard de intrare (tastatura) si utilizeaza un atribut static O alta varianta de program, SalutUtilizator.java, obtine numele caruia i se adreseaza salutul prin intermediul consolei standard de intrare (din fereastra de comanda) si utilizeaza un atribut. 0 0 * Importul pachetului de clase de intrare-iesire (IO). import java.io.*; public class SalutUtilizator { * Numele utilizatorului. Atribut global (static), * partajat de clasa si de toate obiectele clasei. public static String atribut; public static void main(string[] args) throws IOException { BufferedReader intrareconsola = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Introduceti-va numele: "); atribut = intrareconsola.readline(); System.out.println("Buna ziua " + atribut + "!"); Citirea consolei standard de intrare se face prin intermediul unui flux de intrare pentru caractere (in Java, caracterele sunt codate UNICODE pe octeti), declarat in linia 0, conectat la fluxul standard de intrare (care ofera datele de la tastatura sub forma de octeti simpli) prin intermediul unui flux de intrare care face conversia octet-caracter (linia ). Dupa lansare, programul afiseaza mesajul "Introduceti-va numele: ", iar daca utilizatorul introduce numele Nick urmat de <Enter>, efectul este urmatorul: directorcurent> java SalutUtilizator Introduceti-va numele: Nick Buna ziua Nick! Atributul (numit si variabila membru a clasei) este o variabila declarata la acelasi nivel cu metodele clasei (functiile ei membru), este creata in momentul crearii clasei (daca este declarata static) sau in momentul crearii obiectului (daca nu este declarata static), si este accesibila in

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm interiorul clasei, si inainte si dupa locul declararii ei (ba chiar si in exteriorul clasei, in functie de specificatorul de acces folosit). Atributul folosit aici, numit atribut, este declarat static (este global, fiind o locatie unica la nivelul clasei) si public (este accesibil de catre orice alta clasa Java). Daca ar fi fost declarat fara static (local, fiind creata o locatie separata pentru fiecare obiect) programul ar fi trebui modificat pentru a putea functiona (se poate verifica efectul indepartarii cuvantului cheie static). Pentru a functiona fara static, in locul liniilor si ar fi trebuit scris: SalutUtilizator salut = new SalutUtilizator(); salut.atribut = intrareconsola.readline(); System.out.println("Buna ziua " + salut.atribut + "!");. Varianta care utilizeaza o fereastra de dialog, un atribut non-static, un constructor, o metoda si un obiect al clasei curente O alta varianta de program, SalutUtilizator.java, obtine numele caruia i se adreseaza salutul prin intermediul unei fereastre de dialog (Swing). 0 0 0 * Clasa importata din pachetul de clase grafice avansate (swing). public class SalutUtilizator { * Numele utilizatorului. * Atribut local (non-static), la nivel de obiect, cu acces public. public String nume; * Initializeaza atributul obiectului curent. Constructor. public SalutUtilizator() { // Obtinerea numelui utilizatorului prin fereastra de dialog nume = JOptionPane.showInputDialog("Introduceti-va numele:"); * Afiseaza un salut. Metoda utilitara. public void salutanume() { // Concatenare de siruri de caractere System.out.println("Hello " + nume + "!"); public static void main(string[] args) { // Variabila locala initializata cu un nou obiect afisor SalutUtilizator afisor = new SalutUtilizator(); // Apelul metodei de afisare a numelui afisor.salutanume();

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm Fereastra de dialog este cel mai simplu si elegant mod de obtinere a unei intrari de la utilizator atunci cand este nevoie. Pentru a fi utilizata este necesara declaratia de import din linia si apelul din linia. Metodei showinputdialog() i se ofera ca parametru mesajul catre utilizator, iar metoda returneaza intrarea de la utilizator sub forma de sir de caractere (obiect ale clasei String). Atributul non-static nume impune crearea unui obiect al clasei SalutUtilizator (linia ) pentru a putea fi utilizat. Constructorii sunt metode care au acelasi nume cu al clasei, nu returneaza valori, sunt apelate in momentul crearii obiectelor (dupa operatorul new) si sunt folosite in general la initializarea atributelor non-statice. Constructorul fara parametri SalutUtilizator() initializeaza atributul nume. Constructorul este un caz particular de delegare a functionalitatii, in acest caz fiind delegata initializarea atributelor si a altor resurse in momentul crearii obiectelor. Metodele (functiile membru) sunt singurele forme in care pot fi declarate functiile in Java. Ele pot fi cu sau fara parametri, si pot returna sau nu valori (in acest ultim caz, tipul valorii returnate este void). Metoda salutanume() nu are parametri si afiseaza un mesaj care contine atributul nume. Metodele sunt cazul cel mai simplu si mai des intalnit de delegare a functionalitatii. Separarea codului in functii (metode) serveste gestiunii mai simple a codului, modularizarii codului la nivel de secventa de instructiuni, reutilizarii codului la nivel de functie. In general functia principala main() deleaga anumite sarcini catre alte functii, acestea la randul lor catre altele, s.a.m.d. O forma mai complexa si mai avansata de delegare a functionalitatii este separarea codului in mai multe clase si obiecte (fiecare la randul ei separata functional). In acest caz metoda principala din clasa principala deleaga anumite sarcini catre alte metode ale clasei principale (mai rar) si catre metode ale altor clase. Acestea la randul lor pot delega sarcini catre alte metode ale acelorasi clase sau catre metode ale altor clase, s.a.m.d.. Varianta care utilizeaza delegarea la nivel de clase O alta varianta de program, SalutUtilizator.java, utilizeaza : - delegarea functionalitatilor de obtinere a informatiilor catre o noua clasa, utilitara, numita Obtinere, si - delegarea functionalitatilor de afisare a informatiilor catre o noua clasa, utilitara, numita Afisare. Clasa SalutUtilizator are rolul de dispecer de sarcini, metoda ei principala continand scenariul principal (citirea prenumelui de la consola, afisarea unui salut in consola, citirea numelui prin fereastra grafica, afisarea unui salut in fereastra grafica).

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm Ambele clase utilitare ofera atat varianta consolei standard cat si cea a ferestrelor de dialog. Metodele lor sunt de tip static. 0 0 * Exemplifica constructii de baza ale limbajului Java. Clasa utilitara. public class Afisare { * Afiseaza un text in consola. Metoda utilitara. * @param text Textul de afisat. public static void textinconsola(string text) { System.out.println(text); * Afiseaza un text in fereastra de dialog. Metoda utilitara. * @param text Textul de afisat. public static void textinfereastra(string text) { JOptionPane.showMessageDialog(null, text); 0 0 0 * Importul pachetului de clase de intrare-iesire (IO). import java.io.*; * Exemplifica constructii de baza ale limbajului Java. Clasa utilitara. public class Obtinere { * Obtine un text prin consola. Metoda utilitara. * @param mesaj Mesajul catre utilizator. * @return Textul obtinut. public static String textdinconsola(string mesaj) throws IOException { BufferedReader inconsola = new BufferedReader(new InputStreamReader(System.in)); System.out.print(mesaj); String text = inconsola.readline(); return (text); * Obtine un text printr-o fereastra grafica. Metoda utilitara. * @param mesaj Mesajul catre utilizator. * @return Textul obtinut. public static String textdinfereastra(string mesaj) { String text = JOptionPane.showInputDialog(mesaj); return (text);

Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm 0 0 0 * Clasa importata din pachetul de clase grafice avansate (swing). * Importul pachetului de clase de intrare-iesire (IO). import java.io.*; public class SalutUtilizator { * @param args Lista argumentelor programului. public static void main(string[] args) throws IOException { // Variabila locala String prenume = Obtinere.textDinConsola("Introduceti-va prenumele:"); // Apelul metodei de afisare a numelui Afisare.textInConsola("Buna ziua, " + prenume + "!"); // Variabila locala String nume = Obtinere.textDinFereastra("Introduceti-va numele:"); // Apelul metodei de afisare a numelui intreg Afisare.textInFereastra("Buna ziua, " + prenume + " " + nume + "!"); De reflectat:. Cum ar arata programul SalutUtilizator daca metodele claselor Obtinere si Afisare ar fi non-statice?. Cum trebuie modificat programul SalutUtilizator pentru a putea executa in mod repetat scenariul anterior (citire prenume, afisare salut in consola, citire nume, afisare salut in fereastra)?