Laborator 3

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

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

PROGRAMARE ORIENTATA PE OBIECTE

Microsoft Word - lab4.doc

Ingineria Sistemelor de Programare

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Programarea şi utilizarea calculatoarelor

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

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

Microsoft Word - CarteC.doc

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

Programarea şi utilizarea calculatoarelor

SUBPROGRAME

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

Top

Proiectarea Sistemelor Software Complexe

E_d_Informatica_sp_MI_2015_bar_02_LRO

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

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

Paradigme de Programare

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Microsoft Word - Curs 7 - JavaScript.doc

Slide 1

proiectarea bazelor de date

Object Oriented Programming

Diapositive 1

CURS

Tablouri (continuare)

Microsoft Word - CarteC.doc

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

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

Cursul 1 1. Introducere Corpul numerelor complexe Dezvoltarea istorică a gândirii matematice a urmărit îndeaproape evoluţia ideii de număr. Această ev

Declararea variabilelor

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

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

L7

Slide 1

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

Subiectul 1

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

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

Paradigme de programare

Metode API - integrare FGO v.2.5 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 5 EMITERE... 5 PRINT... 6 S

Ingineria Sistemelor de Programare

PHP (II)

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

09. Informatica 2 - MM 1

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

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

Microsoft Word - cap1p4.doc

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Limbaje de Programare Curs 5 – Siruri de caractere

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

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

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

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

Metode API - integrare FGO v.2.8 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 4 EMITERE... 4 PRINT... 6 S

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

C++ Probleme

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Microsoft Word - PCLP2_Curs_4_2019.doc

Ruby on Rails Pop Alexandru Pavel Razvan Calculatoare 4

Cuantizare Vectoriala.doc

E_d_Informatica_sp_SN_2014_bar_10_LRO

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

Lab6LCD

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

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

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

Inteligență artificială Laboratorul 8 Perceptronul și rețele de perceptroni în Scikit-learn Stanga :multimea de antrenare a punctelor 3d; Dreapta : mu

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

PowerPoint Presentation

Laborator Fragments Un fragment reprezintă o porțiune dintr-un Activity. Într-un activity se pot combina mai multe fragmente ți un fragment se poate r

LUCRAREA NR

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

tehnologii web

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

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

Introducere în limbajul JavaScript

CABINET MINISTRU

Metode API - integrare FGO v.3.0 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 4 EMITERE... 4 PRINT... 6 S

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

Curs 6 Fragments Un fragment reprezintă o porțiune dintr-un Activity. Într-un activity se pot combina mai multe fragmente ți un fragment se poate reut

Creational design patterns

CL2009R0976RO bi_cp 1..1

Limbaje de Programare Curs 8 – Fisiere

Utilizare Internet

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

-

Documentaţie Tehnică Verificare TVA API Ultima actualizare: 1 ianuarie / 92 1

Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

PROIECT DIDACTIC Clasa a VII-a Informatică și TIC

Laborator 5 - Paradigme de Programare

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

Transcriere:

Laborator 3 Programare III săptămâna 8-12.10.2018 OBIECTIVE: - Folosirea modificatorilor unei clase (public, abstract, final) - Folosirea modificatorilor de acces în declaraţiile membrilor unei clase Noţiuni: declarare clase metode modificatori de clasa, modificatori de atribute şi modificatori metode constructori Începând din acest laborator: Comentați și formatați corespunzător codul sursă Utilizați convenţiile de scriere a codului pentru limbajul Java: https://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html Utilizați documentația: Java 1.7 API Specification: http://docs.oracle.com/javase/7/docs/api/ Documentarea codului sursă Comentarii de clasă Comentariile de clasă pot conţine o descriere a rolului clasei şi pot include informaţii despre autor, versiune, versiunea aplicaţiei în care au fost create. Exemplu: /** * Clasa care gestioneaza datele despre o locuinta. Clasa contine o descriere a * unei locuinte dar si metode de calcul a diferiti indicatori. * * @author Popescu Ion * @version 1.0 * @since v-2.2 * */ public class Locuinta { Comentarii metodă Comentariile de metode pot conţine informaţii despre: rolul metodei, parametrii metodei, valoarea de return, excepţiile pe care le aruncă metoda. Exemplu: /** 1

* Metoda care calculeaza eficienta energetica a unei cladiri pe baza * tipului grilei de calcul. * * @param grila * - tipul grilei de calcul * @return coeficientul de eficienta energetica */ public float eficientaenergetia(int grila) { return 0; Generare documentaţie folosind utilitarul javadoc în Eclipse Documentaţi se generează în format HTML cu ajutorul utilitarului javadoc. În Eclipse putem genera documentaţia selectând Project/Generate Javadoc Mai multe detalii despre specificarea comentariilor găsiţi la: http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html Probleme laborator 1. Să se creeze o clasă Carte care are următoarele atribute: titlu (public), autor (privat), isbn(public), an apariţie (privat), număr pagini (package). Pentru clasa Carte să se definească: a. Trei constructori: unul fără parametrii (implicit), unul cu trei parametri și unul care conţine toate atributele clasei b. Metode de setare şi obţinere a valorilor variabilelor ( set, get ) c. O metodă de afişare a câmpurilor clasei Carte (metoda are prototipul public String tostring() ). d. Realizaţi un program pentru a testa metodele adăugate la cerinţele anterioare 2. Fie clasa Cântec care are următoarele atribute: titlu, compozitor, interpret, durată (în secunde). Atributele durată şi interpret sunt private, iar atributele titlu şi compozitor sunt publice. a. Să se scrie un constructor implicit şi unul cu toate atributele b. Să se scrie metode de setare şi obţinere a atributelor titlu şi durată c. Să se scrie o metodă de afişare d. Să se scrie o metodă care transformă durata din secunde în milisecunde e. Realizaţi un program pentru testarea metodele adăugate la cerinţele anterioare 3. La exemplul de la exerciţiul 2 adăugaţi următoarele: a. O constantă pentru durata minimă a unui cântec. b. Modificaţi metoda de setare a duratei unui cântec astfel încât să nu se poată seta cu o valoare mai mică decât cea specificată în constantă c. Modificaţi clasa de mai sus astfel încât valoarea iniţială a duratei să fie cea setată constanta de la punctul a) 2

d. Adăugaţi o metodă care vă permite să număraţi câte instanţe de cântece au fost create în programul de test. 4. Să se definească o clasa Complex care să modeleze lucrul cu numere complexe. Membrii acestei clase vor fi: 2 variabile de tip double pentru partea reală, respectiv imaginară a numărului complex ; un constructor cu 2 parametri de tip double pentru iniţializarea celor 2 variabile ; un constructor cu un parametru de tip double, care reprezintă partea reală a numărului; o metodă de calcul al modulului unui număr complex. Modulul unui număr complex este, unde re este partea reală, iar im este partea imaginară a numărului complex. Pentru calculul radicalului se va folosi metoda statică sqrt() din clasa Math, care necesită un parametru de tip double şi returnează un rezultat de tip double ; o metodă de afişare pe ecran a valorii unui număr complex, sub forma: parte_reala + i*parte_imaginara o metodă statică numită suma() care să accepte ca parametri 2 numere complexe şi care să returneze suma lor, sub formă de număr complex o metodă statică numită produs() care să accepte ca parametri 2 numere complexe şi care să returneze produsul lor, sub formă de număr complex. Pe lângă clasa Complex se va defini o clasă ClientComplex care va conţine exemple de utilizare pentru metodele clasei Complex. TEMA TERMEN 19.10.2018 1. Definiţi o clasă Ochelari care are ca atribute: producător, preţ şi tip ochelari. Pentru clasa Ochelari definiţi următoarele metode: a) un constructor implicit (fără parametri) b) un constructor cu 2 şi unul cu 3 parametrii c) o funcţie statică de comparare a două perechi de ochelari d) o funcţie membră care permite creşterea preţului unei perechi de ochelari cum un procent x e) o metodă de afişare a unei perechi de ochelari Obs. Definiţi o clasă sau enumerare care conţine valorile pe care le poate lua atributul tip ochelari (soare, vedere). Pentru a exemplifica metodele definite creaţi o nouă clasă. Validaţi atributele claselor, de exemplu preţul să fie pozitiv sau tipul ochelarilor să aparţină mulţimi de valori valide. 3

2. Să se scrie o clasă Java care să ușureze lucrul cu matrici de dimensiune oarecare (n x m), având elemente numere reale. In clasa Matrice definiţi următoarele: a. Constructori care vor primi matrici sub diferite forme (tablouri unidimensionale, bidimensionale). b. Metode de afișare a unui element de la o anumită poziție, afișarea unei linii, afişarea unei coloane. c. O metodă statică de adunare a două matricii. d. Metode de înmulțire a unei matricii cu altă matrice sau cu un scalar. e. Metodă de calcul a transpusei matricii curente. f. Exemplificaţi modul de utilizare a metodelor de mai sus. Metode moştenite din Clasa Object Clasa Object declară un număr de metode care pot fi suprascrise de subclase ale ei (aceasta înseamnă că în orice aplicaţie putem suprascrie aceste metode). Când implementam o clasa trebuie sa ţinem cont de unele aspecte legate de obiectele instanţă (cum trebuie copiate <cloned>, comparate, şterse, afişate sub forma unui String). Putem suprascrie aceste metode atunci când comportamentul lor implicit nu satisface cerinţele programului. Următoarele metode pot fi supraîncărcate: public boolean equals(object obj); public String tostring(); public final native int hashcode(); protected native Object clone(); protected void finalize(); Obs: obiectele de tip array permit de asemenea suprascrierea acestor metode. Trei dintre aceste metode sunt publice şi pot fi suprascrise de orice clasă, în timp ce două metode sunt protejate şi din acest motiv trebuie declarate publice în momentul în care sunt suprascrise. boolean equals(object obj) Metoda folosită pentru a compara două obiecte (obiectul pentru care se apelează metoda şi obiectul transmis ca parametru). Metoda implicita oferita de clasa Object returnează true dacă cele doua obiecte reprezintă de fapt acelaşi obiect, folosindu-se operatorul = =. Rămâne în sarcina programatorului sa decidă cum se compara doua obiecte ale aceleiaşi clase. 4

Documentaţia JDK defineşte un set riguros de reguli ce trebuie avute in vedere atunci când se doreşte stabilirea egalităţii între doua obiecte. Metoda equals() implementează o relaţie de echivalenta: Este reflexiva ; Este simetrica; Este tranzitiva; String tostring() Metoda returnează o reprezentare de tip String pentru obiectul care o apelează. Implicit returneaza un Sring sub forma: ClassName @ 1cc7a0, adică numele clasei urmat de caracterul @ si apoi o valoare in hexa a codului hash. Pentru a genera o reprezentare mult mai utila putem supraîncărca acesta metodă şi returna orice String care sa ne ofere informaţii despre obiect. int hashcode() Un hash cod este o valoare întreaga ce reprezintă întreaga valoare a unui obiect. Codurile hash sunt folosite drept chei în tabelele de dispersie aşa cum este implementata clasa HashTable din pachetul java.util. Versiunea implicita a metodei va încerca să genereze un cod pentru fiecare obiect dar se poate ca la un moment dat sa genereze valori diferite pentru un acelaşi obiect. Dacă se întâmplă acest lucru atunci trebuie sa suprascriem metoda pentru a implementa o noua funcţie de dispersie (hash function) care va genera codurile hash corecte. De fiecare dată când este invocata metoda hashcode() asupra aceluiaşi obiect ea trebuie să returneze în mod constant aceeaşi valoare întreagă. Dacă două obiecte sunt egale conform metodei equals(), atunci apelând metoda hashcode() pentru fiecare din cele două obiecte trebuie sa obţinem aceeași valoare întreaga. Programatorii se bazează de obicei pe implementarea implicita a metodei hashcode() decât sa implementeze o noua versiune (ceea ce poate duce la o munca destul de dificila). object clone() Metoda va crea o copie a obiectului. Implicit doar obiectul curent este copiat şi nu şi celelalte obiecte spre care acesta poate avea referinţe. Valorile primitive în Java sunt întotdeauna copiate. Metoda suprascrisa trebuie declarata public. Dacă un obiect nu poate fi clonat va fi aruncata excepţia : CloneNotSupportedException. void finalize() Această metodă este apelată automat de colectorul de gunoi (garbage collector) când un obiect nu mai este referențiat şi poate fi şters din memorie. Varianta implicită nu conține nici o instrucţiune în corpul metodei. Colectorul de gunoaie poate rula oricând, astfel încât nu se poate determina cu exactitate când va fi apelată metoda finalize(). Putem supraîncărca această metodă în cazul în care de exemplu anumite date trebuie salvate într-un fişier înainte de a fi pierdute sau o conexiune pe reţea trebuie închisă. 5

Dacă apare o eroare metoda poate folosi în declaraţie şi clauza throw, aruncând o excepţie de tipul Throwable. Dacă această excepţie este aruncată atunci ea va fi prinsă de colectorul de gunoi şi ignorată, lăsând programul să-şi desfăşoare execuţia până la final. Metoda tostring() De multe ori este necesar ca datele conţinute de obiecte să fie convertite la şiruri de caractere în vederea participării obiectelor respective ca operanzi în expresii de manipulare a stringurilor. De exemplu funcţiile print/println necesită ca parametru o referinţă String. Convertind un obiect la String, am putea să "afişăm" acel obiect cu ajutorul funcţiilor print/println. Problema se rezolvă astfel: Dacă intr-o clasă este definită o metodă având semnătura: public String tostring( ); atunci referinţele la obiectele clasei respective pot să apară ca operanzi in operaţii de concatenare de şiruri, deoarece în aceste situaţii se apelează automat metoda tostring(). Deci, programatorul trebuie să-şi definească în clasele sale câte o metodă tostring(), dacă doreşte să convertească obiectele respective la stringuri. Exemplu: Class Punct { //... public String tostring( ) { String s = "("+String.valueOf(x)+","+y+")"; return s; class ClientPunct { public void ometoda( ) { Punct p1 = new Punct(1,2); //... System.out.println("Punctul p1="+p1); //... 6