LEKSION 11 Database-t Object-Oriented(te orientuar objekt)

Slides:



Advertisements
Similar presentations
Chapter 8: Object-Oriented Databases
Advertisements

©Silberschatz, Korth and Sudarshan8.1Database System Concepts Chapter 8: Object-Oriented Databases New Database Applications The Object-Oriented Data Model.
Algjebra Relacionale & SQL
©Silberschatz, Korth and Sudarshan1Database System Concepts Lecture 7: Introduction to Database Management Systems - Object-Oriented Databases Lecturer:
Rishikimi i literatures Leksioni 7 1. Permbajtja e prezantimit Qellimi i rishikimit te literatures Procesi i rishikimit te literatures Instrumentet e.
©Silberschatz, Korth and Sudarshan8.1Database System Concepts Chapter 8: Object-Oriented Databases Need for Complex Data Types The Object-Oriented Data.
Object-Oriented Databases (chapter 3/3) ODMG-OQL for querying the database Simple OQL Queries, Retrieving Objects – an example Database Entry Points Retrieving.
Object-Oriented Databases By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany) DIRECTOR ARUNAI ENGINEERING COLLEGE TIRUVANNAMALAI.
Object-Oriented Databases
CILET SOFTVER I KENI TE INSTALUAR NE SISTEMET KOMPJUTERIKE TE JUAJA
Lenda : Kontabiliteti Financiar
SHMU-2 VUSHTRRI Punim Seminarik Lënda:Informatikë Tema:Kartela Grafike
Leksioni nr 2 Data Base.
JavaScript Leksion 4.
Arkitektura baze e aplikacioneve web Hyrje ne PHP
Variablat Konstantet Strukturat e kontrollit Ciklet Tabelat (Arrays)
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
ALGORITMIKE Leksion 1.
Sherbimet e fileve dhe printimit
Marrja e te inputit te perdoruesit
DHTML, DOM dhe Javascript Modeli i objekteve dhe ngjarjeve
Algoritmet e Renditjes
Universiteti i Prizrenit
Menaxhimi I Hapesires ruajtese
Funksionet ne PHP PhD, MS, Under Leksion 8.
Bazat e te dhenave Elemente kryesore te MySQL-se
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
Organizimi i te dhenave dhe i Informacionit
Formatet e skedareve grafike dhe teknikat e kompresimit
Elementet e gjuhës C++.
LEKSION 12 XML (Extensible Markup Language) Skema XML
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
JavaScript Leksion 8.
Lenda : Kontabiliteti Financiar
MS POWERPOINT PREZANTIMET.
Arsimtar:Muhamer Ujkani
Elementet e gjuhës C++.
Universiteti AAB Programi: PSIKOLOGJI STATISTIKE T-testi Për grupet e pavarura Për grupet e varura Dr.sc. Merita Shala.
Perdorimi i Multimedias ne Web
Tema: Viruset dhe Antiviruset Sh. m
Algoritmet e Sortimit.
Menaxhimi i perdoruesve dhe grupeve
F U N K S I O N E T.
SH-M-U-2 Kl.9/4 Valon Ibishi Lënda:Informatikë Tema:Programi Excel Arsimtar:Muhamer Ujkani Vushtrri,2014.
LEKSION 9 Dizenjimi i database-it relacional.
Pune me projekt Tema: Zgjidhja e problemeve nepermjet aplikimit te patches, updates dhe services packs. Punoi: xhensila cela.
Punuar nga: Rilind Ademi
Variablat dhe Funksionet
I Love my family!!!.
Perpunimi i stringjeve
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
SH.M.U 2 Vushtrri Sistemet operative te Winows XP Muhamer Ujkani
Punuar nga : Granit Bajrami
Format ne HTML/XHTML Leksion Jan-19.
Targetimi i elementeve specifike
E Drejta e Procedures Penale
Makinat Virtuale.
Degëzimet.
Puna me fajlla ne C++ Dr. Fisnik Dalipi.
TIK 12 – Prof. Blerand Koshi
TIK 11 – Prof. Blerand Koshi
Te kuptojme “Active Directory”
Variablat dhe konstantet
Degëzimet.
Chapter 8: Object-Oriented Databases
Cfare eshte EMD? Electronic Miscellaneous Document (EMD) eshte metoda elektronike standarte qe do te perdoret tashme per shitjen dhe menaxhimin e sherbimeve.
SMART TOURISM ENHACEMENT PROJECT
Advanced Database System Design
Presentation transcript:

LEKSION 11 Database-t Object-Oriented(te orientuar objekt) Tipet e te dhenave komplekse Modeli i te dhenave i orientuar objekt Gjuhet e programimit object-oriented

Nevoja per tipet e te dhenave komplekse Aplikacionet tradicionale te database-it ne procesimin e te dhenave kane konceptin e tipeve te te dhenave te thjeshta. Relativisht pak tipe te te dhenave, ku plotesohet 1NF Tipet e te dhenave komplekse kane patur nje perdorim te gjere ne vitet e fundit P.sh. Adresat mund te shikohen si: String e vetme, ose Atribute te ndara per cdo pjese, ose Atribute te perbera (te cilat nuk jane ne 1NF) P.sh. Shpesh eshte e pershtatshme per te ruajtur atribute shumevlereshe, pa krijuar nje relacion te ndare per ruajtjen e vlerave ne 1NF Aplikacionet computer-aided design, computer-aided software engineering Database-t multimediale dhe te imazhit, dhe database-t document/hypertext

Modeli i te dhenave Object-Oriented Shkurt dhe qarte, nje objekt i korrespondon nje entiteti ne modelin E-R Modeli (paradigma) object-oriented eshte i bazuar ne kodin e enkapsulimit dhe te dhenat qe i perkasin nje objekti ne nje njesi te vetme Modeli i te dhenave object-oriented eshte nje model logjik i te dhenave (si ne mod. E-R) Adaptimi i nje modelit te programimit object-oriented (p.sh. Smalltalk, C++ ) ne sistemet e database-it

Struktura objekt Nje objekt ka te shoqeruar me te: Nje bashkesi variablash qe permbajne te dhenat per objektin. Nje bashkesi mesazhesh per te cilat pergjigjet objekti; cdo mesazh mund te kete zero, nje ose disa parametra Nje bashkesi metodash, ku secila eshte pjese e kodit per te implementuar nje mesazh; nje metode kthen nje vlere si pergjigje kundrejt mesazhit Paraqitja fizike e te dhenave eshte e dukshme vetem tek implementuesi i objektit Mesazhet dhe pergjigjet sigurojne nderfaqen e vetme te jashtme per nje objekt Termi i mesazhit nuk nenkupton domosdoshmerisht kalimin fizik te mesazhit. Mesazhet mund te implementohen si nje thirrje procedure.

Mesazhet dhe metodat Metodat jane programe te shkruara ne nje gjuhe me qellim te pergjithshem me tiparet e meposhtme: Vetem variablat ne objekt mund te referohen direkt Te dhenat ne objektet e tjera jane te referuara vetem nga dergimi i mesazheve\ Metodat mund te jene metoda read-only ose update Metodat read-only nuk ndryshojne vleren e objektit Ne te vertete, cdo atribut i nje entiteti duhet te perfaqesohet nga nje variabel dhe dy metoda, nje per te lexuar dhe tjetra per te update-ar atributin P.sh. Atributi address paraqitet nga nje variabel address dhe dy mesazhe get-address dhe set-address. Per lehtesi, disa modele te te dhenave object-oriented lejojne aksesin direkt te variablave te objekteve te tjera

Klasat objekt Objektet e ngjashme grupohen ne nje klase; cdo objekt i tille quhet nje instance e asaj klase Gjithe objektet ne nje klase kane te njejten: Variabel, me te njejtin tip Nderfaqen e mesazhit Metodat Ato mund te diferencohen nga vlerat qe i caktohen variablave Shembull: gruponi objektet per njerezit ne nje klase person Klasat jane analoge me blloqet e entiteteve ne modelin E-R

Shembull i percaktimit te klases class employee { /*Variables */ string name; string address; date start-date; int salary; /* Messages */ int annual-salary(); string get-name(); string get-address(); int set-address(string new-address); int employment-length(); }; Metodat per te lexuar dhe per te caktuar variablat e tjere gjithashtu nevojiten me enkapsulimin perkates Metodat percaktohen te ndara P.sh . int employment-length() { return today() – start-date;} int set-address(string new-address) { address = new-address;}

Trashegimia P.sh. Klasa e klientave te bankes eshte e ngjashme me klasen e punonjesve te bankes, megjithese ka ndryshime Te dyja ndajne variablat dhe mesazhet, p.sh. Emri (name) dhe adresa(address) Por ka variabla dhe mesazhe specifike per secilen klase, p.sh paga(salary) per punonjesit dhe norma-kredise (credit-rating) per klientet Cdo nenpunes eshte nje person; keshtu qe employee eshte nje specializim i person Njesoj, customer eshte nje specializim i person Krijoni klasat person, employee dhe customer Var/mesazhet te aplikueshme per gjithe personat e lidhura me klasen person. Var/mesazhet specifike per punonjesit te lidhur me klasen employee; njesoj per customer

Trashegimia Vendosni klasat ne nje hierarki specializim/IS-A Var/mesazhet qe i perkasin klases person trashegohen nga klasa employee si dhe customer Rezultati eshte nje hierarki klase

Percaktimi i hierarkise se klasave class person{ string name; string address: }; class customer isa person { int credit-rating; }; class employee isa person { date start-date; int salary; }; class officer isa employee { int office-number, int expense-account-number, };

Shembull klase hierarkie (vazh..) Listimi i plote i variablave per objektet ne klasen officer: office-number, expense-account-number: te percaktuara lokalisht start-date, salary: te trasheguara nga employee name, address: te trasheguara nga person Metodat trashegohen ne menyre te ngjashme me variablat Zevendesueshmeria— cdo metod e nje klase, supozojme person, mund te thirret njesoj me cdo objekt qe i perket cdo nenklase, si psh subclass officer i person. Zgjerimi i klases: bashkesia e te gjithe objekteve ne klase. Dy opsione: 1. Zgjerimi i klases employee perfshin gjithe objektet officer, teller dhe secretary Zgjerimi i klases employee perfshin vetem objektet employee qe nuk gjenden ne nje subclass si officer, teller, ose secretary Kjo eshte zgjedhja e zakonshme ne sistemet OO Mund te aksesoje zgjerimet e subclass-ve per te gjetur gjithe objektet e nentipeve employe

Shembull te trashegimise se shumefishte Klasa DAG per shembullin e bankes

Trashegimia e shumefishte Me trashegimine e shumefishte nje klase mund te kete me shume se sa nje superklase Relacioni Klasa/nenklasa paraqitet nga nje directed acyclic graph (DAG) Vecanerisht i dobishem kur objektet mund te klasifikohen ne me shume se nje menyre, te cilat jane te pavarura nga njeri-tjetri P.sh. temporary/permanent eshte i pavarur nga Officer/secretary/teller Krijoni nje nenklase per cdo kombinim te nenklasave Nuk eshte e nevojshme te krijohen nenklasat per kombinime qe nuk eshte e mundur te modelohen ne database Nje klase trashegon variablat dhe mesazhet nga te gjitha superklasat Ekziston nje ambiguitet kur nje variabel/mesazh N me te njejtin emer trashegohet nga dy superklasa A dhe B Nuk eshte problem nese variabel/mesazh percaktohet ne nje superklase shared (te perbashket) Perndryshe, bej nje nga veprimet e meposhtme: Shenoje si nje error Riemero variablat (A.N dhe B.N) Zgjedhni vetem njerin

Disa shembuj per trashegimine e shumefishte Nga ana konceptuale, nje objekt mund t’i perkase seciles nga subclass-t e shumta Nje person mund te luaje rolin e nje studenti (student), nje mesuesi (teacher) ose lojtari(footballPlayer), ose cdo kombinim nga te treja P.sh. Nje student teaching assistant qe gjithashtu luan futboll Mund te perdorim disa trashegimi per te modeluar “rolet” e nje objekti Lejimi i nje objekti per te pranuar nje ose disa nga nje bashkesi tipesh Por, shume sisteme insistojne qe nje objekt duhet te kete nje most- specific class Qe do te thote, duhet te kete nje klase seciles i perket nje objekt, e cila eshte nje subclass e te gjithe klasave te tjera seciles i perket objekti Krijoni subclasses si psh, student-teacher dhe student-teacher-footballPlayer per cdo kombinim Kur jane te mundura disa kombinime, krijimi i subclasses per cdo kombinim mund te behet i pavolitshem

Identiteti i objekteve Nje objekt e ruan identitetin e tij edhe nese disa ose te gjitha vlerat e variablave ose percaktimet e metodave ndryshojne me kalimin e kohes Identiteti i objektit eshte nje nocion me i forte i identitetit sesa ne gjuhet e programimit ose ne modelet e te dhenave qe nuk bazohen ne orientimin e objektit Vlera– vlera e te dhenave; p.sh vlera e celesit primar e perdorur ne sistemet relacionale Emri – i dhene nga perdoruesi; i perdorur per var dhe procedurat Built-in – identiteti i ndertuar ne modelin e te dhenave ose ne gjuhen e programimit Nuk kerkohet user-supplied identifier Eshte forma e identitetit e perdorur ne sistemet object-oriented

Identifikuesit e objekteve Object identifiers perdoren per te identifikuar ne menyre unike objektet Identifikuesit e objekteve jane unik: Dy objekte nuk kane te njejtin identifikues Cdo objekt ka vetem nje identifikues objekti P.sh. Fusha spouse e nje objekti person mund te jete nje idenfikues e nje objekti tjeter person Mund te ruhet si nje fushe e nje objekti, per t’iu referuar nje objekti tjeter Mund te jete: I gjeneruar nga sistemi ose I jashtem (si psh. social-security number) Identifikuesit e gjeneruar nga sistemi: Jane me te lehte per t’u perdorur, por nuk mund te perdoren ndermjet sistemeve te dabase-it Mund te jene te perseritshem nese ekziston tashme nje identifikues unik

Permbajtesit e objekteve Cdo komponent ne nje design mund te permbaje disa komponente te tjera Mund te modelohen si permbajtes te objekteve. Objektet qe permbajne objekte te tjera quhen objekte te perbera Nivele te shumta te permbajtjeve krijojne nje hierarki permbajtjeje Linqet e interpretuara si is-part-of, jo is-a. Lejon qe te dhenat te shikohen ne granularitete (te grimcuara) te ndryshme nga perdorues te ndryshem

Gjuhet object-oriented Konceptet object-oriented mund te perdoren ne menyra te ndryshme Orientimi-objekt mund te perdoret si nje tool (mjet) dizenjimi, dhe mund te kodohet ne, psh, nje database relacionale Ne menyre analoge me modelimin e te dhenave me diagramen E-R dhe pastaj konvertimi ne nje bashkesi relacionesh Konceptet e orientimit objekt mund te pershihen ne nje gjuhe programimi qe perdoret per te manipuluar database-in Object-relational systems – shtimi i tipeve komplekse dhe orientimi-objekt ne gjueh relacionale Persistent programming languages – zgjerimi i gjuhes se orientuar-objekt per t’u marre me database-t duke shtuar konceptet si perhershme(qendrueshme) dhe koleksionet

Gjuhet e perhershme te programimit Gjuhet e qendrueshme te programimit lejojne krijimin e objekteve dhe ruajtjen e tyre ne nje database, dhe perdorimin e tyre direkt nga nje gjuhe programimi Lejojne manipulimin e te dhenave direkt nga gjuha e programimit Nuk eshte e nevojshme te shkruajme SQL Nuk eshte e nevojshme per ndryshime te dukshme ne format (type) Ndryshimet e formateve kryhen ne menyre transparente nga sistemi Pa nje gjuhe te qendrueshme programimi, ndryshimet ne format behen nje “barre” tek programuesi Me shume kod per te shkruar Me shume shanse per bugs (gabime) Lejojne manipulimin e objekteve ne memorie Nuk eshte e nevojshme qe ne menyre eksplicite te ngarkohen nga ose te ruhen ne database Ruan kodin, ruan tejkalimin e ngarkeses/ruajtjes kur kemi te bejme me sasi te medha te te dhenave

Gjuhet e perhershme te programimit Dizavantazhet e gjuheve te qendrueshme te programimit Ne saje te fuqise se disa gjuheve te programimit, eshte me e lehte per te bere gabime ne programim qe demton database-in. Kompleksiteti i gjuheve krijon veshtiresi ne nivelin e larte te optimizimit automatik Nuk suporton deklarimin e query-ve ashtu si dhe database-t relacionale

Perhershmeria e objekteve Metodat per te bere objektet e perkohshme (te rastit) te perhershme duke vendosur: Persistence by Class – deklaroj gjithe objektet e nje klase qe te jene te perhershme; te thjeshte por jo fleksibel Persistence by Creation – zgjeroj sintaksen per krijimin e objekteve per te specifikuar qe nje objekt eshte i perhershem. Persistence by Marking – nje objekt qe eshte i perhershem dhe pertej ekzekutimit te programit shenohet si i perhershem perpara perfundimit te programit Persistence by Reachability – deklaroj (root) objektet e perhershme; objektet jane te perhershem nese ato referohen nga objekti root direkt ose indirekt

Identiteti i objekteve dhe pointer-at Nje objekti te perhershem i caktohet nje identifikues objekt i perhershem Gradat e vazhdimesise se identitetit: Intraprocedure – idenfikimi vazhdon vetem gjate ekzekutimit te nje procedure te vetme Intraprogram – idenfikimi vazhdon vetem gjate ekzekutimit te nje programi te vetem ose query Interprogram – idenfikimi vazhdon nga nje ekzekutim i programit ne nje tjeter, por mund te ndryshojne nese organizimi i ruajtjes ndryshon Persistent – idenfikimi vazhdon kudo gjate ekzekutimit te programit dhe riorganizimit strukturor te te dhenave; i kerkuar per sistemet e orientuara-objekt

Identiteti i objekteve dhe pointer-at Ne gjuhet O-O si C++, nje identifikues objekt eshte aktualisht nje pointer ne memorie Persistent pointer – perhershem pertej ekzekutimit te programit Mund te mendohen si nje pointer ne nje database P.sh. Specifikoni identifikuesin e file-t dhe ofset (fillimin) ne file Problemet e lidhura me riorganizimin e db-se duhet te zgjidhen me ane te mirembajtjes se forwarding pointers

Ruajtja dhe aksesii i objekteve te perhershem Emerimi i objekteve (ashtu si do te emeronim file-t) Nuk mund te shkallezohet ne nje numer te madh objektesh Ne menyre tipike i jepet vetem shtrirjes se klasave (class extents) dhe koleksioneve te tjera te objekteve, por jo objekteve Veme ne dukje identifikuesit e objekteve ose pointer-at e perhershem ne objekte Mund te ruhen nga jashte Gjithe objektet kane identifikues objekti Ruajme koleksionet e objekteve, dhe lejojme programet te perseriten pergjate koleksioneve per te gjetur objektet e kerkuara Modelimi i koleksioneve te objekteve si tipe koleksioni Class extent – koleksioni i te gjithe objekteve qe i perkasin klases; zakonisht mirembahet per te gjithe klasat qe mund te kene objekte te perhershme

Sistemet C++ te perhershem Gjuha C++ lejon suportin per shtimin e perhershmerise pa ndryshuar gjuhen Deklarojme nje klase te quajtur Persistent_Object me atributet dhe metodat per te suportuar perhershmerine Overloading – aftesia per te ripercaktuar emrat e funksioneve dhe operatoret standard (p.sh. +,-, operatori pointer i referimit - > ) kur i aplikohet tipeve te reja Template classes ndihmojne ne ndertimin e nje sistemi te tipit “tip-sigurte” duke suportuar koleksionet dhe tipet e perhershme Sigurimi i perhershmerise pa zgjeruar gjuhen C++ eshte: Relativisht i lehte per t’u implementuar Por shume me i veshtire per t’u perdorur

Gjuha e percaktimit objekt ODMG C++ Grupi i manaxhimit te database-it objekt eshte nje konsorciumi industri me qellim standardizimin e database-ve O-O Ne menyre te vecante gjuhet e perhershme te programimit Perfshin standardet per C++, Smalltalk dhe Java ODMG-93 ODMG-2.0 dhe 3.0 (qe eshte 2.0 plus extensions ne Java) Pershkrimi i bazuar ne ODMG-2.0 Standardi ODMG C++ shmang ndryshimet ne gjuhen C++ Siguron funksionalitet nepermjet klasave template dhe librarive te klasave

Tipet ODMG Template class d_Ref<class> perdoret per te specifikuar referencat (pointer-at e perhershem) Template class d_Set<class> perdoret per te percaktuar bashkesine e objekteve Metodat perfshijne insert_element(e) dhe delete_element(e) Disa klasa te tjera si d_Bag (bashkesi ku lejohen duplikimet), d_List dhe d_Varray (variable length array) gjithashtu sigurohen d_ versioni i disa tipeve standarde te siguruar, p.sh. d_Long dhe d_string Interpretimi i ketyre tipeve eshte platforme e pavarur Ne menyre dinamike alokohen te dhenat ne db dhe jo ne memorien kryesore

Shembull: ODMG C++ ODL class Branch : public d_Object { …. } class Person : public d_Object { public: d_String name; // should not use String! d_String address; }; class Account : public d_Object { private: d_Long balance; public: d_Long number; d_Set <d_Ref<Customer>> owners; int find_balance(); int update_balance(int delta); };

Shembull: ODMG C++ ODL class Customer : public Person { public: d_Date member_from; d_Long customer_id; d_Ref<Branch> home_branch; d_Set <d_Ref<Account>> accounts; };

Implementimi i relacioneve Relacionet ndermjet klasave te implementuara nepermjet referencave Tipe te vecanta reference forcojne integritetin duke shtuar/hequr linqet e anasjella Tipi d_Rel_Ref<Class, InvRef> eshte nje reference e Class, ku atributi InvRef i Class eshte referenca e anasjelle Ne menyre te ngjashme, d_Rel_Set<Class, InvRef> perdoret per nje bashkesi referencash Metodat e vleredhenies (=) te klases d_Rel_Ref eshte overloaded Perdor percaktimin e tipit per te gjetur dhe update-ar ne menyre automatike linkun e anasjelle I liron programuesit nga detyra e update-it te linqeve te anasjella Eliminon mundesine e linqeve te paqendrueshme Ne menyre te ngjashme, metodat insert_element() dhe delete_element() te d_Rel_Set perdorin percaktimin e tipit per te gjetur dhe update-ar ne menyre automatike linkun e anasjelle

Gjuha e perpunimit te objektit ne ODMG C++ Perdorimi i versioneve te perhershme te operatoreve te C++ si new(db) d_Ref<Account> account = new(bank_db, “Account”) Account; new alokon objektin ne database-in e specifikuar, ne vend te memories Argumenti i dyte (“Account”) tregon emrin e tipit te perdorur ne database Operatori i de-referimit (mosadresimit) -> kur aplikohet ne nje reference d_Ref<Account> ngarkon objektin e referuar ne memorie (nese nuk eshte akoma prezent) perpara se te vazhdoje me dereferimin e zakonshem ne C++ Constructor per nje klase – nje metode e vecante per te inicializuar objektet kur ato krijohen; te thirrura automatikisht ne thirrje new Shtrirjet e klasave mirembajne automatikisht nje krijim te nje objekti dhe nje fshirje Vetem per klasat per te cilat kjo cilesi eshte e specifikuar Specifikimi i bere nepermjet nderfaqes, jo C++ Mirembajtja automatike e shtrirjes se klasave nuk suportohet ne versionet e meperparshme te ODMG

ODMG C++OML: Database dhe funksionet objekt Klasa d_Database siguron metodat per: Hapjen (lidhjen) nje database: open(databasename) Emerimin e objekteve: set_object_name(object, name) Kerkimin e objekteve nga emri: lookup_object(name) Riemerimin e objekteve: rename_object(oldname, newname) Mbylljen e nje database-i: close() Klasa d_Object trashegohet nga te gjithe klasat e perhershme Siguron metodat per alokimin dhe fshirjen e objekteve Metoda mark_modified() duhet te thirret perpara se nje objekt update-et Thirret automatikisht kur krijohet objekti

Shembull OML ODMG C++ int create_account_owner(String name, String Address){ Database bank_db.obj; Database * bank_db= & bank_db.obj; bank_db =>open(“Bank-DB”); d.Transaction Trans; Trans.begin(); d_Ref<Account> account = new(bank_db) Account; d_Ref<Customer> cust = new(bank_db) Customer; cust->name - name; cust->address = address; cust->accounts.insert_element(account); ... Code to initialize other fields Trans.commit(); }

Shembull OML ODMG C++ Per te aksesuar nje class extent: d_Extent<Customer> customerExtent(bank_db); Klasa d_Extent siguron metoden d_Iterator<T> create_iterator() per te krijuar nje perseritje ne class extent Gjithashtu siguron metoden select(pred) per te kthyer perseritjen e objekteve qe plotesojne kushtin Perseritesit ndihmojne ne kalimin hap pas hapi te objekteve ne nje koleksion ose class extent. Koleksionet (bashkesite, listat etj.) gjithashtu sigurojne metoden create_iterator()

Tipare te tjera te ODMG C++ Gjuha e deklarimit te query-ve OQL, ngjason me SQL-ne Formon query-n si string, dhe e ekzekuton ate per te marre nje bashkesi rezultatesh d_Set<d_Ref<Account>> result; d_OQL_Query q1("select a from Customer c, c.accounts a where c.name=‘Jones’ and a.find_balance() > 100"); d_oql_execute(q1, result); Siguron mekanizmin e trajtimit te gabimeve te bazuar ne perjashtimet ne C++, nepermjet klases d_Error Siguron API per aksesimin e skemes se nje db

Transparenca e perhershmerise se nje pointer-i Dizavantazhet e metodes ODMG C++ : Dy tipe pointer-sh Programuesi duhet te sigurohet qe thirret mark_modified(), perndryshe database-i mund te korruptohet Metoda ObjectStore Perdor ekzaktesisht te njejtin tip pointer-i per ne memorie dhe objektet e db Perhershmeria eshte transparente ne aplikacione Pervec se ne krijimin e objekteve Te njejtat funksione mund te perdoren ne-memorie dhe objektet e perhershme meqe tipet e pointer-ve jane te njejte Nuk eshte e nevojshme te thirret mark_modified(), modifikimi detektohet automatikisht

Sistemet e perhershme JAVA ODMG-3.0 percakton prapashtesat ne Java per perhershmerine Java nuk suporton template-t, keshtu qe kerkohen zgjerime te gjuhes Modeli per perhershmerine: perhershmeri me ane te zgjatimit Pershtatet me modelin Java’s garbage collection Garbage collection nevojitet ne database gjithashtu Vetem nje tip pointeri per pointer-at e perkohshem dhe te perhershem Klasa behet me aftesi te perhershme duke ekzekutuar nje post- procesor, nje kod objekt i gjeneruar nga kompiluesi i Java-s Te kundert me pre-procesorin e perdorur ne C++ Post-procesori shton automatikisht mark_modified() Percakton tipet e koleksioneve DSet, DBag, DList, etj. Perdor perseritesit e Java, nuk ka nevoje per klasa te reja perseritese

Java ODMG Transaksioni duhet te startoje aksesimin e db nga njeri objekt root Gjen objektet e tjera duke ndjekur pointer-at nga objektet root Objektet e referuara nga nje objekt i marre alokojne hapesire ne memorie, por nuk merren patjeter Marrja mund te behet duke u “zvarritur” Nje objekt me hapesire te zene por akoma nuk eshte marre quhet nje objekt bosh Kur nje objekt bosh aksesohet, te dhenat e tij merren nga disku