Klasifikacija

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Klasifikacija as PDF for free.

More details

  • Words: 1,926
  • Pages: 9
klasifikacijski zavisna organizacija podataka revizija 5

autor: Ivan Vodišek Šibenik, 2009.

Uvod Svemir. Obilje različitih podataka. Neki od tih podataka korisni su nama, živim bićima. Podatke je moguće grupirati na različite načine, što nam može poslužiti za lakši pronalazak informacija. Ovdje je opisan način transformacije dvodimenzionalnih tablica u kompaktan oblik dobiven grupiranjem istovrsnih podataka. Kao što ćemo vidjeti, jedan isti sustav tablica je moguće klasificirati, tj. grupirati na različite načine, te u više hijerarhijskih razina, formirajući različita hijerarhijska stabla klasa za isti skup podataka. Ako ste upoznati s OOP tehnologijom (objektno orijentirano programiranje), ovaj rad se može smatrati proširenjem trenutno postojeće OOP tehnologije u slijedećem smislu: osim što je jedan isti skup objekata moguće klasificirati na različite načine, svojstva klasa međusobno mogu biti parametarsko-funkcijski povezana. To znači da bi se mijenjanjem sadržaja jednog svojstva mijenjali i sadržaji drugih, s njim povezanih svojstava. Ovakav sustav teži ka potpunoj zamijeni metoda klasa programiranih imperativnim programskim kodom.

1

Klase i objekti Jedan od intuitivnih načna grupiranja podataka koji nam je nekako sam po sebi poznat je grupiranje podataka u dvodimenzionalnu tablicu. Takve tablice sastoje se od zaglavlja i redaka. U zaglavlju tablice naznačeno je koje i kakve podatke sadrži svaki redak tablice. Kao primjer na kojem ćemo temeljiti daljnje izlaganje, upotrijebiti ćemo tablicu koja u svojim retcima sadrži podatke o nekim osobama:

ime

vrsta

boja kose

Maja

Ženska

Smeđa

Mila

Ženska

Smeđa

Mate

Muški

Smeđa

Mirko

Muški

Smeđa

Mario

Muški

Plava

Mimi

Ženska

Plava

tablica 1.

Postoje slučajevi kada se neki podaci u određenom broju redaka ponavljaju, kao što je to slučaj sa podacima “vrsta” i “boja kose” iz našeg primjera. Takva ponavljanja pružaju nam priliku da grupiramo podatke prema njhovoj sličnosti. Jedan od mogućih načina grupiranja podataka iz našeg primjera je grupiranje prema koloni “vrsta”:

vrsta Ženska

Muški

ime

boja kose

Maja

Smeđa

Mila

Smeđa

Mimi

Plava

Mario

Plava

Mate

Smeđa

Mirko

Smeđa

tablica 2.

2

Grupe podataka dobivene opisanim načinom nazivati ćemo klasama, a kolonu prema kojoj grupiramo podatke klasifikacijskom osnovom. Retke tablice ćemo nazivati objektima. U tablici 2. prema klasifikacijskoj osnovi “vrsta” izdvojili smo dvije klase: “Ženska” i “Muški”. Iste je objekte uglavnom moguće klasificirati na više međusobno nezavisnih načina, upotrebljavajući u pojedinim slučajevima različite osnove klasifikacije. Na primjer, objekte iz prethodne tablice moguće je klasificirati i prema klasifikacijskoj osnovi “boja kose”:

boja kose

ime

vrsta

Maja

Ženska

Mila

Ženska

Mate

Muški

Mirko

Muški

Mario

Muški

Mimi

Ženska

Smeđa

Plava

tablica 3.

Moguća je i kaskadna višerazinska klasifikacija objekata u stablastu strukturu:

ime

vrsta

boja kose

Smeđa Maja Ženska Mila Mate Muški Mirko Plava vrsta

Muški

Mario

Ženska

Mimi

tablica 4.

Objekte iz tablici 4. također je moguće prikazati i nekim drugim redoslijedom višerazinskog klasificiranja (npr: 1. “vrsta”, 2. “boja kose”). 3

Elementi objekata - svojstva Dosad smo vidjeli na koji se način objekti mogu grupirati u klase. U pojedinim klasifikacijskim pregledima, kolone tablica prema kojima nismo vršili klasifikaciju nazivati ćemo svojstvima klasa. Objekti pojedine klase, osim svojih inicijalnih svojstava, mogu sadržavati i dodatna svojstva specifična samo za tu pojedinu klasu (ekvivalent OOP-ovom proširivanju skupa svojstava naslijeđenih od roditeljske klase). U slijedećoj tablici, koja je prema klasif. osnovi “zanimanje” podijeljena na klase “Student” i “Liječnik”, prikazana su i dodatna svojstva tih klasa (“smijer” i “godina”, te “specijalizacija”). ime zanimanje Student

vrsta smijer

godina

Maja

Ženska

Prirodni

5

Mila

Ženska

Društveni

2

Mate

Muški

Društveni

3

Mirko

Muški

Prirodni

4

Mario

Muški

Neurolog

Mimi

Ženska

Kardiolog

specijalizacija Liječnik

tablica 5.

Naravno, pojedine objekte je moguće klasificirati i prema ovdje opisanim dodatnim svojstvima, što se može vidjeti u slijedećem primjeru: ime

vrsta

smijer

zanimanje

Student

godina Maja

Ženska

5

Mirko

Muški

4

Mila

Ženska

2

Mate

Muški

3

Kardiolog

Mimi

Ženska

Neurolog

Mario

Muški

Prirodni

Društveni

Liječnik spec.

tablica 5.

4

Tipovi svojstava i njihovi sadržaji Svako svojstvo ima svoj tip koji opisuje moguće sadržaje tog svojstva. Tip svojstva je objekt ili skup objekata koje svojstvo: 1. smije sadržavati prilikom korisničkog odabira - u ovom slučaju, kad korisnik upisuje sadržaj nekog svojstva, tada se mora pobrinuti da taj sadržaj pripada skupu objekata obuhvaćenih tipom tog svojstva. Ovdje tip svojstva dobiva smisao u osiguravanju uniformnosti sadržaja svojstva. Pomoću takve uniformnosti može se postići neka razina univerzalnosti upotrebe svojstva. Npr. sve sadržaje svojstava moguće je prikazati kao niz znakova, a sadržaje svih svojstava koji označavaju boju moguće je prikazati još i kao kvadratiće dane boje. Bez tipova svojstava, svojstvu koje označava boju mogao bi se dodijeliti i podatak koji nije boja, što bi rezultiralo nefunkcioniranjem sustava koji dotično svojstvo prikazuje kao obojani kvadratić. Također, tip svojstva može poslužiti za unos sadržaja svojstva tako da se korisniku na izbor ponude samo oni objekti koji pripadaju tom tipu. Tipovi podataka imaju vrlo važnu ulogu i u automatskoj konstrukciji dolaska do rješenja zadnih problema. 2. sadrži automatski, bez korisničke intervencije - ovaj slučaj pokriva potrebe parametarski određivanog sadržaja svojstva. Npr. ako su poznata svojstva “put” i “vrijeme” tada se brzina može izračunati pomoću formule: brzina = put / vrijeme, a tip svojstva “brzina” bi bio matematički izraz: “put / vrijeme”. Tip svojstva predstavljen je nizom parova naziva svojstava i njihovih traženih vrijednosti. Tip svojstva obuhvatiti će već postojeće objekte čija svojstva sadrže vrijednosti navedene u spomenutom nizu. Slijedeći primjeri tipova svojstava odražavaju stanje objekata iz tablice 5. Izraz: [zanimanje: Student | smijer: Prirodni] predstavlja skup objekata s imenima “Maja” i “Mirko”, a izraz: [zanimanje: Liječnik | specijalizacija: Kardiolog] predstavlja objekt s imenom “Mimi”. Ponekad je također potrebno da tip svojstva pokazuje na neko drugo svojstvo. U tim slučajevima potrebno je naznačiti i naziv traženog svojstva. Izraz: [zanimanje: Student | smijer: Društveni | vrsta: Ženska] . ime predstavlja ime “Mila”. Postoji još i slučaj kada tražimo sadržaj svojstva objekta, a upit nam izdvaja više od jednog objekta. Npr. izraz: [zanimanje: Student | smijer: Društveni] . ime predstavlja skup imena “Mila” i “Mate”. Tipove je moguće i kombinirati. Npr. izraz: [zanimanje: [ime: Mirko] . zanimanje | vrsta : Ženska] . ime predstavlja skup imena “Mila” i “Maja”. Objekte obuhvaćene tipom svojstva je moguće prilikom njihovog dodjeljivanja 5

nadopuniti i proizvoljnim novim svojstvima (ekvivalent OOP overloadingu). Tada je također moguće i dodatno specificirati postojeća svojstva dodjeljivanih objekata (ekvivalent OOP overridingu). Te nadopune i izmjene tada vrijede samo za svojstvo kojem smo dodijelili takav nadograđeni i izmijenjeni tip.

Primjena Područje primjene ovakvog sustava je vrlo široko i seže od izrade naprednog tabličnog kalkulatora ili baze podataka, pa sve do ambiciozno zamišljenog koncepta datotečnog i čitavog operativnog sustava. Naime, u određene klase možemo mapirati listu podataka iz ulaznih jedinica (npr. tipkovnica), dok listu podataka u nekoj drugoj klasi možemo zadužiti da kontrolira stanja izlaznih jedinica (npr. ekran). Povezivanjem tih dvaju listi, tj. postavljajući listu stanja izlaznih jedinica (npr. linije, likovi i slova) u odnos zavisan o listi stanja ulaznih jedinica (npr. niz pritisnutih tipaka na tipkovnici), može se dobiti funkcionalno korisničko sučelje kako polja za unos teksta, tako i operativnog sustava. U slijedećem primjeru prikazano je kako bi mogla izgledati aplikacija temeljena na ovdje opisanom sustavu: renderer trenutno osvijetljenog objekta ovdje iscrtava svoje podatke full screen dodavanje novog svojstva za klasu opredjeljenje : Korisnički programer +

Osoba

opredjeljenje

zanimanje

Programer

ime

Osoba

vrsta

+

prog. jezik platforma Maja

Ženska

c++, Java

PC, Apple

Mirko

Muški

c++

Apple

Mila

Ženska

Java

Fizikalne simulacije

Mate

Muški

c++, c#

Baze podataka

Kardiolog

Mimi

Ženska

Neurolog

Mario

Muški

Sistemski p.

+

Korisnički p.

ime

Mila

vrsta

Ženska

zanimanje Programer

područje

Liječnik

opredjeljenje Korisnički p. +

prog. jezik

Java

područje

Fizikalne simulacije

spec.

područje renderera klase zanimanje : Programer

dodavanje novog objekta pod klasama zanimanje : Programer | opredjeljenje : Korisnički p.

Zaključak Ovaj rad baca svjetlo na jednostavnu ideju: “klasa = sadržaj svojstva”. Takvim poimanjem klasa, u sprezi s međusobno zavisnim svojstvima dobiva se fleksibilan model za manipulaciju podacima. Iako takav model izgleda obećavajuće, tek će se u praksi pokazati njegova stvarna upotrebljivost.

6

Dodatak A: neki primjeri klasa U tablici 7. slijede neki od primjera klasa koje mogu biti korisne. Klasa IsNull koja ispituje da li postoji ijedan objekt u danoj klasi, uz klasu Char spada u primitivne klase. Za primitivne klase ne postoji adekvatna definicija u našoj notaciji, već se postojanje i definicija tih klasa trebaju interno implementirati u programskom rješenju temeljenom na našem sustavu.

Class util

IF

param : Bool

trueResult : Class

falseResult : Class

ovdje smo definirali privremenu bezimenu klasu čije objekte dosežemo pomoću susjednog svojstva IF . param

IsNull

param : List

IsEqual

lParam : Class

result : [choice : [ IF . param! ]! ] . result! choice : Bool

result : Class

True

IF . trueResult

False

IF . falseResult

funkcija IsNull definiran je interno kao primitivna klasa ovakvog oblika.

result : Bool

result : [

rParam : Class

IsEqual . rParam Bool

util : IsNull | param : [ util : IsEqual! | lParam : rParam! ]

] . result!

expression

Simple

funkcija ispitivanja jednakosti objekata definirana je preko primitivne funkcije IsNull. Ako je klasa IsEqual prazna kada u njoj izdvojimo objekte čiji je lParam jednak rParam, tada je njen rezultat False.

True False

Compound And

lParam : Bool

rParam : Bool

result : Bool

True

True

True

True

False

False

False

True

False

False

False

False

lParam : Bool

rParam : Bool

result : [ : Not | param : [ : And | lParam : [ Not | param : [ Or ] . lParam! ] . result! | rParam : [ Not | param : [ Or ] . rParam! ] . result! ] . result! ] . result!

param : Bool

result : Bool

True

False

False

True

item : Class

next : List

Or

Not

operator And je definiran pomoću semantičke tablice

operator Or je definiran pomoću operatora And i Not

klasa List definirana je rekurzivno List

tablica 7. 7

Dodatak B: definicijska domena Slijede primjeri filtriranja i sortiranja listi podataka (tablica 8 i tablica 9). Mogućnost njihovog definiranja u našem sustavu trebala bi opisivati potpunost domene definabilnih algoritama. Kao glavnim konstrukcijskim elementima ovdje se koristimo rekurzijom uz izmjenu postojećih i nadopunu novim svojstvima (OOP overriding i overloading). overload-ano svojstvo condition proslijediti će se prilikom prosljeđivanja klase List kao parametra svojstva source. Class util

FilteredList

ovdje je operator IF naivno zapisan u formatu IF(condition, trueResult, falseResult). result : [ tmp : IF( source . condition, [ source ], IF( source . next == [ null ], [ null ], [ FilteredList | source : source. next ] . result . tmp, ) )| item : IF( [ tmp ] == [ null ], primjer rekurzije i [ null ], overriding-a [ tmp . item ] )| next : IF( [ tmp ] == [ null ], [ null ], [ FilteredList | source : tmp . next ]. result ) ]!

source : [ List | condition : Bool ]

svojstvo tmp pokazuje na prvi objekt u listi source za koji svojstvo condition vraća True.

tablica 8.

Class util

SortedList

sourceList : [ List | isLessThan : Bool ]

overload-ano svojstvo isLessThan proslijediti će se prilikom prosljeđivanja klase List kao parametra svojstva sourceList.

insertItem : [ listToPopulate : List | result : [ listToPopulate | result next : IF(SourceList . isLessThan (listToPopulate . next . Item) OR isNull (listToPopulate . next), List | item : SourceList . item! | next : listToPopulate . next!, [

insertItem | listToPopulate : super . next! ] . result! ) ]! ] result : [ IF ( isNull(SourceList), null, [

insertItem | listToPopulate : [ SortedList | sourceList : super . next ] . result! ]. result! ) ]!

tablica 9. 8

svojstva su poredana okomito radi optimalnog iskorištenja prostora na papiru

Related Documents