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

Documente similare
Ingineria Sistemelor de Programare

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

Laborator 3

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

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

PROGRAMARE ORIENTATA PE OBIECTE

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

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

C++ Probleme

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Proiectarea Sistemelor Software Complexe

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

E_d_Informatica_sp_MI_2015_bar_02_LRO

PCLPII-C16(9)

proiectarea bazelor de date

Microsoft Word - lab4.doc

Tablouri (continuare)

Ingineria Sistemelor de Programare

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Paradigme de programare

SUBPROGRAME

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

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Object Oriented Programming

Slide 1

Top

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

Microsoft Word - CarteC.doc

Microsoft Word _POO_Lab_1_Modificari_v01.htm

09. Informatica 2 - MM 1

Declararea variabilelor

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 PowerPoint - Curs_TPI_22_v01.ppt

Subiectul 1

PowerPoint Presentation

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

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

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

Logică și structuri discrete Mulțimi Casandra Holotescu

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

Slide 1

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

Programarea şi utilizarea calculatoarelor

Aggregating Data

Limbaje de Programare Curs 5 – Siruri de caractere

Paradigme de Programare

Laborator02

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

1

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Capitole Speciale de Informatica - Curs 5: Extragerea informatiilor prin feedback de relevanta. Metode probabiliste de extragere a informatiilor

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Microsoft Word - Curs 7 - JavaScript.doc

CURS

20 SUBIECTE DE EXAMEN - De fapt, în pofida acestor probleme, până la urmă tot vom logaritma, căci aceasta este tehnica naturală în context. Trebuie do

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Diapositive 1

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

E_d_Informatica_sp_SN_2014_bar_10_LRO

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

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Slide 1

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

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

Introducere în limbajul JavaScript

Microsoft Word - PCLP2_Curs_4_2019.doc

Microsoft Word - Curs_07.doc

L7

Baze de date

Microsoft Word - Curs_08.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

Microsoft Word - Curs_10.doc

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

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

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

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

Programarea şi utilizarea calculatoarelor

Resurse (Resources) Aspecte generale Utilizând unealta Resurse (Resources) puteți stoca pe serverul portalului Danubius Online diferite fișiere care c

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

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

PowerPoint Presentation

LUCRAREA NR

Analiză statică Analiza fluxului de date 23 octombrie 2014

D.Rusu, Teoria măsurii şi integrala Lebesgue 6 MĂSURA LEBESGUE Cursul 5 Teorema 6.26 Există submulţimi ale lui R care nu sunt măsurabile Lebesgue. Dem

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

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Информационная система персонализации, печати и учета документов об образовании

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

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

Slide 1

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

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

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

Matematici aplicate științelor biologie Lab06 MV

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

Slide 1

Slide 1

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Transcriere:

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java 2 1.1 Interfaţa Iterator...................................... 2 1.2 Interfaţa Collection.................................... 2 1.3 Interfaţa Set........................................ 2 1.3.1 Clasele HashSet şi TreeSet............................ 2 1.4 Interfaţa List........................................ 3 1.4.1 Clasele ArrayList şi LinkedList.......................... 3 1.4.2 Interfaţa ListIterator................................ 4 1.5 Interfaţa Map....................................... 4 1.5.1 Clasele HashMap şi TreeMap........................... 4 2 Probleme de laborator 5 2.1 Problema 1........................................ 5 2.2 Problema 2........................................ 5 2.3 Problema 3........................................ 5 2.4 Problema 4........................................ 5 2.5 Problema 5........................................ 5 2.6 Problema 6 (bonus).................................... 5 2.7 Problema 7 (bonus).................................... 6 1 http://www.google.ro/ 1

Laborator7 Programare Orientata pe Obiecte: Laborator 7 1 Colecţii de obiecte în Java O colecţie este un grup de date manipulate ca un obiect de sine stătător. Colecţiile sunt definite printr-un set de interfeţe şi au suportul într-un set de clase care implementează aceste interfeţe. 1.1 Interfaţa Iterator permite selectarea fiecărui element din colecţie Interface Iterator { boolean hasnext(); Object next(); void remove(); 1.2 Interfaţa Collection public interface Collection { int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional Object[] toarray(); Object[] toarray(object a[]); 1.3 Interfaţa Set corespunde definiţiei matematice a unei mulţimi (nu sunt acceptate elemente duplicate) în comparaţie cu interfaţa Collection: interfaţa este identică fiecare constructor trebuie să creeze o colecţie fără duplicate metoda add() nu poate adăuga un element care se află deja în mulţime 1.3.1 Clasele HashSet şi TreeSet implementează interfaţa Set clasa HashSet: 2

implementată folosind un tabel de dispersie elementele nu sunt ordonate metodele add(), remove(), contains() au complexitate constantă în timp, O(c) clasa TreeSet: implementată folosind un arbore garantează ordonarea elementelor metodele add(), remove(), contains() au complexitate logaritmică în timp, O(log n) 1.4 Interfaţa List corespunde unei grupări cu indexare de elemente extensii faţă de interfaţa Collection: accesează elementele prin indecşi, la fel ca un vector permite căutarea bazată pe index a elementelor deţine un iterator specializat, numit ListIterator permite extragerea de subliste metoda add() adaugă la sfârşitul listei metoda remove() şterge de la începutul listei public interface List extends Collection { Object get(int index); Object set(int index, Object element); // Optional void add(int index, Object element); // Optional Object remove(int index); // Optional abstract boolean addall(int index, Collection c); int indexof(object o); int lastindexof(object o); ListIterator listiterator(); ListIterator listiterator(int index); List sublist(int from, int to); 1.4.1 Clasele ArrayList şi LinkedList implementează interfaţa List clasa ArrayList: implementată folosind un vector elementele pot fi accesate direct prin metodele get() şi set() clasa LinkedList: implementată folosind o listă dublu înlănţuită metodele add() şi remove() au o performanţă mai bună în comparaţie cu ArrayList metodele get() şi set() au o performanţa mai slabă în comparaţie cu ArrayList 3

1.4.2 Interfaţa ListIterator public interface ListIterator extends Iterator { boolean hasnext(); Object next(); boolean hasprevious(); Object previous(); int nextindex(); int previousindex(); void remove(); // Optional void set(object o); // Optional void add(object o); // Optional 1.5 Interfaţa Map corespunde unei grupări de asocieri cheie-valoare poate fi referită ca dicţionar sau tablou asociativ public interface Map { Object put(object key, Object value); Object get(object key); Object remove(object key); boolean containskey(object key); boolean containsvalue(object value); int size(); boolean isempty(); void putall(map t); void clear(); public Set keyset(); public Collection values(); public Set entryset(); public interface Entry { Object getkey(); Object getvalue(); Object setvalue(object value); 1.5.1 Clasele HashMap şi TreeMap implementează interfaţa Map clasa HashMap: implementare bazată pe un tabel de dispersie perechile cheie-valoare nu sunt ordonate clasa TreeMap: implementare bazată pe arbori roşu-negru perechile cheie-valoare sunt ordonate pe baza cheii 4

2 Probleme de laborator 2.1 Problema 1 (2 puncte) Să se scrie un program pentru afişarea cuvintelor distincte dintr-un fişier text folosind clasa TreeSet (precum şi clasele RandomAccessFile şi StringTokenizer sau metoda split() din clasa String). Fişierul va conţine şi cuvinte repetate (identice). Elementele mulţimii se vor afişa în ordine crescătoare şi în ordine descrescătoare, fără a apela o funcţie de sortare, folosind două obiecte TreeSet construite diferit (cu şi fără argument de tip Comparator). 2.2 Problema 2 (2 puncte) Să se definească o clasă ArraySet pentru o mulţime neordonată de obiecte realizată ca vector (extinde ArrayList), care să poată înlocui o clasă TreeSet sau HashSet (adică implementează interfaţa Set). Se vor redefini cele două metode de adăugare a unui obiect: boolean add (Object obj) void add (int i, Object obj) Să se folosească clasa ArraySet în locul clasei TreeSet din programul anterior. 2.3 Problema 3 (2 puncte) Să se definească o clasă LinkedSet pentru o mulţime realizată ca listă înlănţuită de elemente distincte. Clasa va implementa interfaţa Set şi va extinde clasa LinkedList. Să se scrie un program pentru crearea unei liste de obiecte Integer şi afişarea ei cu şi fără folosirea unui iterator. 2.4 Problema 4 (2 puncte) Să se definească o clasă LinkedSet pentru o mulţime realizată ca listă simplu înlănţuită, ca o clasă derivată din AbstractSet (se va defini şi o clasă Node). Se vor implementa metodele add, size, iterator, tostring. Adăugarea de elemente se va face numai la sfârşitul listei. 2.5 Problema 5 (2 puncte) Să se definească o clasă LinkList pentru o listă simplu înlănţuită de variabile Object, ca o clasă derivată din AbstractList (se va defini şi o clasa Node). Se vor defini următoarele metode abstracte: int size() boolean add(object) Object get (int) Object set (int, Object) Să se scrie un program pentru crearea, ordonarea (cu metoda Collections.sort()) şi afişarea (cu iterator) a unei liste de şiruri, ca obiect LinkList. 2.6 Problema 6 (bonus) (1 punct) Să se definească o clasă SLinkList pentru o listă simplu înlănţuită ordonată de variabile Object, ca o clasă derivată din AbstractList. Faţă de clasa anterioară se va adăuaga clasei o variabilă Comparator şi un constructor cu argument Comparator. Se vor redefini metodele: boolean add(object) // adăugare la lista ordonată 5

int indexof(object) // căutare în lista ordonată Object set(int, Object) // modificare şi reordonare listă 2.7 Problema 7 (bonus) (1 punct) Să se definească o clasă SArraySet pentru o mulţime ordonată de obiecte şi care implementează interfaţa SortedSet (poate extinde ArrayList). Metodele impuse de interfaţa SortedSet sunt: Comparator comparator() // comparator folosit (null pentru comparaţia naturală) Object first() // primul obiect din mulţime Object last() // ultimul element din mulţime SortedSet subset(object from, Object to) // o submulţime ordonată SortedSet headset(object to) // o submulţime cu primele obiecte SortedSet tailset (Object from) // o submulţime cu ultimele obiecte Să se folosească un obiect SArraySet în programul pentru afişarea cuvintelor distincte dintr-un text în ordine crescătoare şi descrescătoare. Se vor defini (cel puţin) doi constructori: fără argumente şi cu argument de tip Comparator. 6