VISOKOŠOLSKI STROKOVNI ŠTUDIJ
VISOKOŠOLSKI STROKOVNI ŠTUDIJ
VISOKOŠOLSKI STROKOVNI ŠTUDIJ
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>VISOKOŠOLSKI</strong> <strong>STROKOVNI</strong> <strong>ŠTUDIJ</strong><br />
Računalništvo in Informatika – Informatika<br />
POROČILO PRAKTIČNEGA IZOBRAŽEVANJA<br />
v<br />
Modan Informatika d.o.o.<br />
Čas opravljanja: Od 01.12.2008 do 31.5.2009<br />
Mentor v GD Mag. Daniel Blejc, univ.dipl.ing.<br />
Študent: Darko Jerinić<br />
Vpisna številka: 93573363<br />
E – pošta: darko.jerinic@gmail.com<br />
Telefon: 031 – 493 – 064
Kazalo vsebine<br />
1. UVOD..........................................................................................................................................<br />
7<br />
2. PREDSTAVITEV PODJETJA MODAN INFORMATIKA.......................................................<br />
8<br />
2.1. Kratek opis podjetja............................................................................................................................................<br />
8<br />
3. OPIS PRAKTIČNEGA IZOBRAŽEVANJA............................................................................<br />
10<br />
3.1. Uvajanje v delo..................................................................................................................................................<br />
10<br />
3.2. Pristop k projektu in potek izvedbe projekta v podjetju....................................................................................<br />
11<br />
3.3. Izvedba projekta poteka po naslednjih izvedbenih korakih: ............................................................................. 11<br />
3.3.1. Definicija zahtev........................................................................................................................................................<br />
11<br />
3.3.2. Definicija projekta.....................................................................................................................................................<br />
12<br />
3.3.3. Specifikacija produkta................................................................................................................................................<br />
13<br />
3.3.4. Implementacija...........................................................................................................................................................<br />
14<br />
3.3.5. Tehnični prevzem.......................................................................................................................................................<br />
15<br />
3.4. VCL Loaderji....................................................................................................................................................<br />
16<br />
3.4.1. Uvod..........................................................................................................................................................................<br />
16<br />
3.4.2. Zahteve......................................................................................................................................................................<br />
17<br />
3.4.3. Opis VCL komponent ............................................................................................................................................... 17<br />
3.4.4. Struktura razredov......................................................................................................................................................<br />
20<br />
3.4.5. XML Datoteka...........................................................................................................................................................<br />
20<br />
3.4.6. Funkcionalnost in delovanje modula..........................................................................................................................<br />
24<br />
3.4.7. Zaključek...................................................................................................................................................................<br />
26<br />
3.5. Razred za prevod programa...............................................................................................................................<br />
27<br />
3.5.1. Uvod ......................................................................................................................................................................... 27<br />
3.5.2. Zahteve......................................................................................................................................................................<br />
27<br />
3.5.3. Opis datotek...............................................................................................................................................................<br />
28<br />
3.5.4. Delovanje razreda......................................................................................................................................................<br />
28<br />
3.5.5. Zaključek...................................................................................................................................................................<br />
30<br />
4. Pridobljeno znanje in izkušnje...................................................................................................<br />
31<br />
5. Mnenje o praksi..........................................................................................................................<br />
32
Kazalo slik<br />
Slika 3-1: cxTreeView komponenta..............................................................................................18<br />
Slika 3-2: cxTreeList komponenta.................................................................................................18<br />
Slika 3-3: cxGrid komponenta.......................................................................................................19<br />
Slika 3-4: Struktura razredov modula............................................................................................20<br />
Slika 3-5: View node.....................................................................................................................21<br />
Slika 3-6: DataController node......................................................................................................22<br />
Slika 3-7: DataBase node...............................................................................................................23<br />
Slika 3-8: Program pred inicializacijo...........................................................................................24<br />
Slika 3-9: Meni - zagon modula.....................................................................................................24<br />
Slika 3-10: Inicializirani gradniki..................................................................................................25<br />
Slika 3-11: Primerjava Xml in gradnika........................................................................................26<br />
Slika 3-12: Vnos v .ini datoteki.....................................................................................................29<br />
Slika 3-13: Nastavitve....................................................................................................................29
Kazalo tabel<br />
Tabela 3-1 Projketne listine...........................................................................................................11<br />
Tabela 3-2: Datoteka s prevodi......................................................................................................28<br />
Tabela 3-3: Referenčna datoteka...................................................................................................28
1. UVOD<br />
Poročilo o praktičnem izobraževanju je sestavljeno iz dveh delov. Jedro poročila je opis<br />
dela, ki sem ga opravljal v času praktičnega izobraževanja. V uvodnem delu poročila je na<br />
kratko predstavljeno podjetje. Sledi natančen opis del, ki sem jih opravljal v času mojega<br />
praktičnega izobraževanja v podjetju Modan Informatika d.o.o. V zaključku še izrazim svoje<br />
mnenje o praksi, o mojih izkušnjah ki sem jih pridobil.
2. PREDSTAVITEV PODJETJA MODAN INFORMATIKA<br />
2.1. Kratek opis podjetja<br />
Poslovna pot podjetja Modan Informatika d.o.o. se je začela leta 1995 v okviru podjetja<br />
MCI Modan. Podjetje se je nato razvijalo v dve smeri:<br />
• razvijanje industrijske elektronike in<br />
• razvijanje programske opreme za računalnike.<br />
Leta 1997 je prišlo do delitve in nastalo je novo podjetje Modan informatika d.o.o., ki je<br />
nadaljevalo z razvojem programske opreme. V tem razvoju so se usmerili predvsem na tista<br />
področja, ki v Sloveniji takrat še niso bila pokrita. Za Slovenski trg so priredili program za<br />
upravljanje portfeljev vrednostnih papirjev in program za vodenje prodaje v sistemu mrežnega<br />
marketinga. Že od vsega začetka se je dejavnost podjetja konstantno širila. Odlikujejo pa se<br />
predvsem po prilagodljivosti specifičnim potrebam njihovih kupcev.<br />
Njihova temeljna dejavnost je razvoj programske opreme za znanega kupca, ki dopušča<br />
možnost razširitve funkcij in prilagoditve potrebam neznanega kupca. Z njo tesno povezane<br />
so ostale dejavnosti:<br />
• prodaja in servisiranje programskih paketov;<br />
• izobraževanje o uporabi programske opreme;<br />
• svetovanje in uvajanje naprednih rešitev (tehnologij);<br />
• vodenje in vzdrževanje podatkovnih skladišč;<br />
• inženiring računalniških sistemov;<br />
• oblikovanje in izdelava spletnih strani na Internetu.<br />
V času delovanja od začetka do zdaj so razvili štiri zaključene programske sklope in<br />
enega, ki je v zadnji fazi izdelave. Skupna lastnost vseh je, da poenostavljajo poslovanje,<br />
omogočajo izvajanje zapletenih ali obsežnejših procesov na enostaven in uporabniku<br />
sprejemljiv način. Zapletene formule in postopki so predvideni in vključeni v program.<br />
Izvršijo se na poziv uporabnika.<br />
Rezultati njihovega dela so naslednji programski paketi:
• ARCHIVpro98<br />
, program za arhiviranje in delo z dokumenti;<br />
• proTRADE, program za nadzor prodaje v sistemih direktnega in mrežnega<br />
marketinga s tremi različicami;<br />
• WINDEX, program za upravljanje portfeljev in analiza vrednostnih papirjev;<br />
• BAS, programski paket, ki združuje vse tri zgoraj naštete programe, ki so seveda<br />
nadgrajeni, ter orodja za administracijo sistema.<br />
Iz teh osnovnih produktov so izpeljane prilagojene različice za končnega kupca s<br />
specifičnimi potrebami. Tako so nastali produkti za:<br />
• Stanovanjski sklad občine Maribor, za vodenje stanovanj, pogodb in najemnikov;<br />
• Probanko d.z.u., za vodenje investitorjev, investicij, transakcij,…;<br />
• Elito, za mrežni marketing oz. trženje življenjskih zavarovanj;<br />
• Fitness Megafit, za vodenje članstva in pregled poslovanja;<br />
• Individa, za trženje zavarovanj, ki temelji na mrežnem marketingu;<br />
• Itd…
3. OPIS PRAKTIČNEGA IZOBRAŽEVANJA<br />
3.1. Uvajanje v delo<br />
Uvajanje v delo podjetja je potekalo na naslednji način:<br />
• Predstavitev podjetja<br />
• Predstavitev zaposlenih v podjetju<br />
• Predstavitev načina dela v podjetju<br />
• Predstavitev virov informacij v podjetju ( knjige, dodatni program, projektne<br />
dokumentacije, spletni viri, itd.. )<br />
• Predstavitev osnovnih paketov, na katerih se izvajajo nadgradnje za končne stranke<br />
Po predstavitvi podjetja in načina dela mi je mentor zadal naloge, ki sem jih moral<br />
opraviti. Seznanil me je s sodelavci, katere sem lahko prosil za pomoč, pri reševanju<br />
zastavljenih nalog, v vsakem trenutku pa sem lahko dobil pomoč tudi od mentorja.<br />
V podjetje sem prišel z osnovnim znanjem programskega jezika C#, Delphi,<br />
DreamWeaver ter poznavanjem teorije relacijskih podatkovnih baz in povpraševalnega<br />
jezika SQL. Po uvodnem spoznavanju dela v podjetju sem se lotil programiranja zadane naloge.<br />
Moja začetna naloga v podjetju je bila programiranje XML loaderja v programskem jeziku C#, s<br />
katero bom pokazal koliko znanja imam.<br />
V času opravljanja dela sem si veliko pomagal predvsem s projektno dokumentacijo in<br />
literaturo, internetom in pa seveda z znanjem sodelavcev in mentorja. Naučiti sem se moral<br />
osnov jezika XML, in dela z njim. Prav tako sem moral preučiti obstoječe programske produkte,<br />
in loaderje narejene v drugih programskih jezikih ( Delphi )
3.2. Pristop k projektu in potek izvedbe projekta v podjetju<br />
K vsakem projektu je potrebno izdelati ustrezno dokumentacijo. Vsak izdela dokumentacijo<br />
za del, ki ga je implementiral. Za splošno dokumentacijo o projektu je zadolžen vodja projekta.<br />
Dokumentacija mora zajemati:<br />
Projektna dokumentacija<br />
Tehnična dokumentacija<br />
Vse listine, ki so predmet podjetja in predstavljajo<br />
komunikacijo med izvajalci projekta in naročnikom<br />
Je del projektne dokumentacije in vsebuje strokovno<br />
dokumentacijo ki spremlja znanstveno-tehnično izvajanje<br />
projekta<br />
Dokument Je listina z uradno veljavnostjo<br />
Vsebuje opis nekega dogodka, seznanja z določenim<br />
Poročilo<br />
dogajanjem, stanjem, brez osebnih pojasnil in pripomb<br />
Tabela 3-1 Projketne listine<br />
3.3. Izvedba projekta poteka po naslednjih izvedbenih korakih:<br />
3.3.1. Definicija zahtev<br />
Definicija zahtev je del projekta, ki traja od trenutka, ko predstavnik podjetja kontaktira<br />
naročnika, do trenutka, ko so naročnikove želje definirane in potrjene z obeh strani. Hkrati je<br />
opredeljena tehnologija, ki se uporablja za razvoj.<br />
• Aktivnosti:<br />
• Rezultati:<br />
o Posnetek naročnikovih zahtev<br />
o Analiza naročnikovih zahtev<br />
o Globalni cilji<br />
o Opis naročnikovih zahtev in preliminarna ocena obsega del za izvedbo projekta<br />
o Groba ocena stroškov in časovnih okvirjev projekta<br />
o Seznam pričakovanih dogodkov, predvidevanja, opažanja
• Spremljajoča dokumentacija<br />
• Aktivnosti:<br />
• Rezultati:<br />
o Pismo o nameri ( gentlemans agreement )<br />
o Dokument “Definicija zahtev” vsebuje:<br />
� Poročilo “Posnetek naročnikovih zahtev” – kratek opis problema, ki ga<br />
rešujemo. Opis je zastavljen idejno in služi globalni razsvetlitvi tematike<br />
� Dokument “Analiza naročnikovih zahtev” – globalna analiza s tehničnega<br />
vidika, uporaba diagramskih tehnik za predstavitev problema ( Use Case,<br />
Activity diagram ... )<br />
� Dokument “Uporabljene tehnologije” – prva ocena zahtev po razvojnih<br />
orodjih<br />
� Dokument “Splošno” – groba ocena stroškov, časovnih okvirjev projekta,<br />
dogodki, ...<br />
� Dokument “Uporabljene tehnologije” – prva ocena zahtev po razvojnih<br />
orodjih<br />
� Dokument “Splošno” – groba ocena stroškov, časovnih okvirjev projekta,<br />
dogodki, ...<br />
3.3.2. Definicija projekta<br />
o Definicija osnovnih pravil, iz katerih izhajajo vsi udeleženci projekta<br />
o Definicija aktivnosti posameznih udeležencev projekta<br />
o Definicija projektne dokumentacije<br />
o Definicija potrebnih resursov<br />
o Projektni načrt [ milestones, resursi/aktivnosti, stroški ]<br />
• Spremljajoča dokumentacija<br />
o Dokument “splošne definicije” – opis novih spoznanj iz podrobnejše analize<br />
projekta in korespondence z ostalimi udeleženci na projektu, ter naročnikom
o Dokument “Projektni načrt” ( dopolnitev )<br />
• Aktivnosti<br />
• Rezultati<br />
� Dokument “Rokovnik tehnične izvedbe”<br />
� Dokument “Organizacijska struktura projekta”<br />
� Poročilo “Ocena stroškov”<br />
3.3.3. Specifikacija produkta<br />
o Ponovna ocena obsega projekta, funkcionalnosti, potrebnih resursov in<br />
pričakovanega vloženega napora<br />
o Sprejetje dokumentacije, ki bo spremljala projekt<br />
o Pridobiti morebitne dodatne resurse<br />
o Pridobiti morebitna nova razvojna orodja<br />
o Sprejetje pogodbe o implementaciji<br />
o Definirana ali izpolnjena projektna dokumentacija<br />
o Cilji projekta [ cilji projekta so posnetki naročnikovih želja po funkcionalnosti<br />
produkta. Cilji so splošni in so glavna smernica vsem udeležencem projekta ]<br />
o Primarni scenariji [ na podlagi ciljev projekta, se s pomočjo Use Case diagramov<br />
predstavi problematika, ki jo produkt rešuje. V ospredju so zmeraj globalni cilji<br />
projekta. V opisu primarnih scenarijev se opiše in določi primarna ( vrhnja,<br />
osnovna ) funkcionalnost produkta ]<br />
o Sekundarni scenariji [ na podlagi ciljev projekta se s pomočjo Use Case<br />
diagramov predstavi problematika, ki jo zajemajo posamezni primarni scenariji. V<br />
ospredju so zmeraj globalni cilji projekta. V opisu sekundarnih scenarijev se opiše<br />
in določi podrobna funkcionalnost primarnih scenarijev ( zahtev ) ]<br />
o Arhitektura produkta [ na podlagi primarnih in sekundarnih scenarijev se sestavi<br />
arhitektura produkta ]<br />
o Uporabljeni tehnološki postopki in metodologija izvedbe [ določi se uporabljena<br />
tehnologija, razvojna platforma, razvojna orodja in način izvedbe. Kot način
izvedbe gre za določitev ( ločitev ) slojev produkta na podlagi izsledkov sprejetih<br />
scenarijev ( tri-slojno načrtovanje ) ]<br />
o GUI – opcija<br />
o Način testiranja in določitev publikacij k produktu [ opiše se način testiranja<br />
aplikacije. Določi se publikacija, ki mora biti sestavni del produkta ( Help,<br />
definicija API, ... ) ]<br />
o Doplonjen projektni načrt<br />
• Na podlagi izdelane projektne dokumentacije se sestavi projektni načrt, ki vsebuje:<br />
o Določitev spremljajoče dokumentacije k projektu in način komuniciranja<br />
[ določi se dokumentacija in način komuniciranja med udeleženci projekta ter<br />
odgovorne osebe ]<br />
o Milestones - časovni okvirji izvedbe projekta<br />
o Resursi/aktivnosti - kadrovske potrebe za uspešno izvedbo projekta in<br />
razdelitev delovnih področij<br />
o Stroškovna opredelitev<br />
• Spremljajoča dokumentacija:<br />
• Aktivnosti<br />
o Dokument "Specifikacija produkta" – vsebuje dokument "Primeri uporabe"–<br />
use case s primarnimi in sekundarnimi scenariji<br />
o Dokument "Arhitektura produkta" – razredni diagrami, dataflow, modeli stanj<br />
in ostali prijemi definiranja arhitekture<br />
o Dokument "GUI" – diagram grafičnega vmesnika<br />
3.3.4. Implementacija<br />
o Vsi udeleženci na projektu imajo dodeljen svoj del projekta in prestopijo v fazo<br />
implementacije razdelane problematike<br />
o Nadziranje korakov izvajanja in merjenje napredka razvoja<br />
o Sestankovanje ekipe na dnevni bazi za ugotavljanje težav, preden eskalirajo v<br />
nedosegljive okvirje
• Rezultati<br />
o Poročanje o napredku projekta;<br />
o Dodajanje projektne dokumentacije, korespodenca z naročnikom glede<br />
odstopanj v sprejetih projektnih listinah;<br />
• Spremljajoča dokumentacija<br />
• Aktivnosti<br />
• Rezultati<br />
o Dokument "Dnevnik tehnične izvedbe" je dejanski potek dokumenta<br />
"Rokovnik tehnične izvedbe"<br />
o Dokument "Produkt" - vsebuje kopije dokumentov iz prejšnjih faz, ki jih<br />
zdaj obdelamo podrobneje in za namene implementacije – to so zdaj novi<br />
dokumenti, ki izhajajo iz definicij faz 1 – 3<br />
o Dokument "Source – oblika" definicije oblike programskega koda<br />
o Programski kod – ostane izključno v elektronski obliki<br />
o Poročilo "Testiranje" – zapis o testiranju produkta, inštalaciji beta verzije<br />
o Dokument "Publikacije" – vsebuje API, help, priročnike, ...<br />
o Dokument "Organizacija projekta" je kopija Dokumenta "Organizacijska<br />
struktura projekta", ki je podrobneje razčlenjen na diagrame nosilec/naloga,<br />
tehnične opise nalog, ... za potrebe koordinacije implementacije<br />
o Dokument "Računovodske listine" – vsebuje kopije računovodskih listin<br />
(avansnih računov, računov, plačil ...), ki so vezane na projekt<br />
3.3.5. Tehnični prevzem<br />
o Predstavitev izdelka in funkcionalnosti<br />
o Testiranje ustreznosti izdelka<br />
o Ocena ustreznosti na podlagi testiranja ustreznosti
• Spremljajoča dokumentacija<br />
o Dokument “Tehnični prevzem” – s tem dokumentom se potrdi, da produkt<br />
zadovoljuje zahtevam, definiranim v pogodbi<br />
o Dokument “Zaključek” – z izdajo tega dokumenta je projekt zaključen. Vsebuje<br />
potrditve, da so obveznosti vseh strani poravnane<br />
3.4. VCL Loaderji<br />
3.4.1. Uvod<br />
Prva naloga katero sem dobil pri opravljanju prakse je bilo programiranje VCL<br />
Loaderjev. VCL Loaderji omogočajo prikazovanje različnih vrst podatkov na različne načine.<br />
Osnova za VCL Loaderje je XML dokument, v katerem se nahajajo vsi podatki ki so potrebni za<br />
pravilno nalaganje in prikazovanje željenih podatkov.<br />
Podatke lahko prikazujemo v različnih komponentah, in na različne načine. Prav tako<br />
mora biti loader neodvisen od podatkovnega vira. Mora omogočati nalaganje iz čim več različnih<br />
virov ( XML, SQL, podatkovna baza, URL …. ).<br />
Predstavitev projekta je potekala na naslednji način:<br />
• Seznanitev s projektom<br />
• Predstavitev modula, ki ga je bilo potrebno implementirati;<br />
• Predstavitev dokumentacije;<br />
• Predstavitev ključnih faz projekta;<br />
• Predstavitev ciljev v posameznih fazah;<br />
• Predstavitev podatkovnega modela aplikacije;<br />
• Predstavitev sprecifikacije projekta
3.4.2. Zahteve<br />
Glavna naloga je bila implementirati modul, ki bo znal črpati podatke iz različnih virov,<br />
ter prikazovati dobljene podatke v različnih vizualnih komponentah.<br />
Modul mora znati črpati podatke iz različnih virov ( DB, SQL, XML, URL .. ). Vsakega<br />
izmed teh virov mora znati obravnavati, in posredovati podatke naprej v isti obliki.<br />
Za razvojno okolje je bil določen prvo .NET ( C# ), in kasneje še Borland Delphi 7, z<br />
dodatno nameščenimi “Developer Express” komponentami.<br />
Modul mora znati polniti različne vrste vizualnih komponent, tudi če si te med seboj niso<br />
podobne. To je pomenilo implementacijo modula ki se bo znal čim bolj popolno prilagoditi<br />
različnim vizualnim komponentam, in omogočati prikazovanje podatkov v pravilni obliki.<br />
Potrebno je bilo definirati standardni XML dokument, kateri bo uporabljen pri izvajanju<br />
modula. V XML datoteki je bilo potrebno definirati “poglavja” ki vsebujejo podatke o grafičnem<br />
izgledu komponente, o podatkovnem viru iz katerega mora modul črpati podatke, in o načinu<br />
dostopa do podatkovne zaloge, v primeru da je le-ta podatkovna baza.<br />
3.4.3. Opis VCL komponent<br />
• cxTreeView in cxDBTreeView<br />
TreeView komponenta omogoča prikaz podatkov v drevesni strukturi z<br />
nastavitvijo “Parent – Child” relacije. Podobno kot uporablja “Raziskovalec” za prikaz<br />
structure map v računalniku. Komponenta prikazuje samo en »stolpec« podatkov<br />
naenkrat. Tabela ki je povezana na komponento lahko ima več stolpcev, prikazan je pa<br />
tisti ki je definiran kot DisplayField, torej “Prikaznio polje” v komponenti.<br />
Obstajata dve TreeView komponenti, čeprav sta po delovanju popolnoma enaki.<br />
Edina razlika je oblika podatkovne zaloge s katero zna komponenta delati. TreeView<br />
uporablja DATASET podatkovno zalogo, kar pomeni da so podatki prečrpani iz<br />
podatkovnega vira v podatkovno zalogo znotraj delovanja programa. Takšna podatkovna<br />
zaloga se v C# in Borland Delphi okolju imenuje “DataSet”. DBTreeView pa uporablja<br />
podatkovno zalogo DATASOURCE, ki predstavlja povezavo do podatkovne baze.
Slika 3-1: cxTreeView komponenta<br />
• TreeList in DBTreeList<br />
Slika 3-2: cxTreeList komponenta<br />
TreeList komponenta omogoča prikazovanje podatkov podobno kot zgoraj<br />
opisana TreeView komponenta, le da TreeList omogoča prikazovanje vseh stolpcev v<br />
podatkovni zalogi naenkrat.<br />
Tako kot zgoraj opisani TreeView in DBTreeView, obstajata tudi dve TreeListi:<br />
TreeList in DBTreeList, ki se razlikujeta samo po tipu podatkovne zaloge.
• cxGrid<br />
Komponenta je podobna navadni tabeli, le da lahko vsebuje še dodatne<br />
komponente, kot so npr. navaden gumb, “Checkbox”, “Drop-down” meni in podobno.<br />
Komponenta omogoča tudi avtomatsko gnezdenje podatkov z nastavljenimi<br />
relacijami “Parent – Child”, omogoča lahko tudi grupiranje podatkov ter urejanju<br />
stolpcev in skupin.<br />
Slika 3-3: cxGrid komponenta
3.4.4. Struktura razredov<br />
Slika 3-4: Struktura razredov modula<br />
Vsaka komponenta ima loader v svojem razredu, vsi razredi pa imajo skupni nadrazred<br />
imenovan TmiXMLVCLoader.<br />
3.4.5. XML Datoteka<br />
Za brezhibno delovanje VCL Loaderjev potrebujemo natančno definiran XML dokument,<br />
ki je osnova za nalaganje component, črpanje podatkov iz podatkovnih zalog, in prikazovanje na<br />
komponentah.<br />
XML datoteka je sestavljena iz naslednjih “Node-ov”:<br />
• Views<br />
• DataBases<br />
• DataSets<br />
TmiXMLVCLoader<br />
TmiXMLDBTreeList TmiXMLTreeList TmiXMLDBTreeView TmiXMLTreeView<br />
View node vsebuje vse podatke o vizualnem izgledu komponente ( barve, stolpci, skupine ),<br />
obnašanju komponente in načinu prikazovanja podatkov v komponenti.
Slika 3-5: View node<br />
View del vsebuje tudi podatke o povezavi s podatkovnim delom ( xml tabela, SQL<br />
stavkek .. ). Povezava s podatkovnim delom se nahaja v nodu DataController.<br />
DataController skrbi za to da se komponenta katero nalagamo pravilno poveže z<br />
ustreznimi podatki.
Slika 3-6: DataController node<br />
Database node vsebuje podatke o podatkovni bazi, in povezavi na njo. Database je najbolj<br />
pogosto Access podatkovna baza. Za dostop do te podatkovne baze program potrebuje pot do<br />
fizične lokacije na trdem disku, tip podatkovne baze, ime baze, alias, uporabniško ime in geslo<br />
ter ostale podatke potrebne za povezavo.
Slika 3-7: DataBase node<br />
Dataset node pa lahko vsebuje tabelo s podatki in njeno schemo. V primeru da nimamo<br />
na voljo podatkovne baze, lahko podatke prenesemo kar v XML dokumentu, v Dataset nodu.<br />
Loader med delovanjem prebere da se podatki nahajajo v tabeli, in te podatke prečrpa v<br />
podatkovno zalogo ( DataSource ). Shema, ki se nahaja zraven podatkov predstavlja definicijo<br />
vseh polj v XML podatkovni zalogi.
3.4.6. Funkcionalnost in delovanje modula<br />
Slika 3-8: Program pred inicializacijo<br />
Prikazan je testni program, ki je bil uporabljen za programiranje modula, in za testiranje<br />
obnašanja in delovanja modula. Prikaz je zgolj zaradi namenov demonstracije, dokončani moduli<br />
se lahko uporabljajo tudi v drugih aplikacijah. Ob zagonu programa so vse komponente v<br />
neinicializiranem stanju, kot je vidno na sliki zgoraj. Za začetek izvajanja v meniju ( številka 1 )<br />
izberemo kateri razred želimo uporabiti, v drugem meniju ( številka 2 ) pa izberemo katero<br />
funkcijo želimo zagnati.<br />
Slika 3-9: Meni - zagon modula<br />
Po izbiri opcij prvo odpremo privzeti xml, in zaženemo izvajanje modula. Modul s pomočjo<br />
privzete XML datoteke začne z izvajanjem. Od tu naprej poteka vse samostojno, brez<br />
uporabnikove pomoči. Prebere se View odsek v XML datoteki, iz katerega se naložijo vizualne<br />
opcije gradnikov v programu, za tem se preveri katera podatkovna zaloga pripada katerem<br />
gradniku, in s pomočjo Databases in Datasets node-ov v XML-ju prebere podatke iz podatkovnih
virov in jih pretvori v ustrezne podatkovne zaloge, katere so pripravljene za prikaz v<br />
komponentah.<br />
Končni rezultat izvajanja programa so inicializirani gradniki v aplikaciji, ki že vsebujejo<br />
vse podatke kateri so bili za njih predvideni v XML datoteki.<br />
Slika 3-10: Inicializirani gradniki
Slika 3-11: Primerjava Xml in gradnika<br />
3.4.7. Zaključek<br />
Modul “VCL Loader” nam omogoča dinamično in hitro nalaganje različnih vrst<br />
podatkov, brez spreminjanja programske kode. Aplikacijo s takšnim modulom lahko<br />
uporabljamo v najrazličnejše namene. Z dobro definiranim XML dokumentom lahko poljubno<br />
oblikujemo aplikacijo, saj lahko samo z XML dokumentom določamo kakšne podatke želimo, od<br />
kod jih želimo črpati, kako jih želimo prikazati. S pomočjo XML dokumenta lahko<br />
manipuliramo tudi z gradniki na aplikaciji, lahko določamo katere komponente bodo vidne in<br />
katere ne in kako se bodo obnašale.
3.5. Razred za prevod programa<br />
3.5.1. Uvod<br />
Naloga, katero sem dobil, je zahtevala izdelavo razreda in pripadajočih funkcij, ki<br />
omogočajo izbiro jezika v nastavitvah programa. Program je bil napisan za slovenski trg, in so<br />
tako vsa besedila znotraj vseh oken programa bila v slovenskem jeziku. Bilo je potrebno<br />
spremeniti program tako, da je v oknu “Nastavitve” omogočal izbiro različnih jezikov. Prav tako<br />
je bilo potrebno spremeniti pripadajočo .INI datoteko, v kateri so se nahajale vse nastavitve<br />
programa. Program je ob potrditvi nastavitev iz inicializacijske datoteke prebral potrebne<br />
podatke, in glede na izbran jezik nadaljeval delovanje.<br />
3.5.2. Zahteve<br />
Naloga je zahtevala implementacijo razreda, ki bi iz vnaprej določenih tekstovnih datotek<br />
prebirala prevedene beside, in jih vstavljala na pravilna mesta v programskih formah. Pred samo<br />
implementacijo razreda je bilo treba določiti format tekstovne datoteke. Tekstovna datoteka je<br />
vsebovala podatke o objektu, katerega je potrebno prevesti, kateremu razredu ta objekt pripada, v<br />
kateri formi se nahaja in prevedeno besedo, katero je treba vnesti.<br />
Razred je bilo potrebno implementirati v razvojnem okolju Borland Delphi 7, moja<br />
naloga je bila načrtovati, implementirati in dokumentirati omenjeni modul.<br />
Zahtevano je bilo da program uproablja dve tekstovni datoteki. Prva vsebuje vse podatke<br />
o objektih katere prevajamo, in prevedene besede, oz. reference do prevedenih besed. Druga<br />
datoteka je vsebovala prevode, do katerih je mogoče dostopati preko referenc iz prve datoteke.<br />
Program mora prevajati vsako formo posebej, v trenutku ko se prvič naloži z namenom<br />
skrajševanja časa začetnega nalaganja programa.
3.5.3. Opis datotek<br />
Za pravilno delovanje funkcij potrebujemo dve različni datoteki, in sicer, datoteko s<br />
podatki o komponentah katere je treba prevesti, in referenčno datoteko, ki vsebuje prevode ki se<br />
večkrat pojavljajo.<br />
Ime<br />
Ime<br />
Tip<br />
Tag Tip tekst namig tekst namig<br />
Agent Btn1 TButton 0 VCL Text Gumb1 N1 Button1 #2<br />
Agent Btn2 TButton 0 VCL Text Gumb2 N2 Button2 #3<br />
Tabela 3-2: Datoteka s prevodi<br />
Datoteka vsebuje vse podatke ki jih potrebuje, da lahko poišče in zamenja pravilni tekst v<br />
pravilnem gradniku. V primeru da je namesto prevoda navedena referenca ( # ), program preveri<br />
referenčno datoteko za pravilen prevod.<br />
Privzeti tekst Prevedeni tekst<br />
N1 Hint1<br />
N2 Hint2<br />
Tabela 3-3: Referenčna datoteka<br />
Na referenčno datoteko se sklicujemo z znakom “#” in številko – indeks na katerem se<br />
nahaja ustrezni prevod. Za izvoz vseh originalnih tekstov je bilo potrebno izvoziti v tekstovno<br />
datoteko s pomočjo že napisane funkcije, katera ustrezno formatira tekstovno datoteko. Datoteko<br />
je potrebno dati v prevod, po katerem je datoteka pripravljena da služi kot slovar katerega<br />
funkcija uporablja za prevajanje.<br />
Funkcije za delovanje potrebujejo še inicializacijsko datoteko programa, v kateri so<br />
zapisani vsi jeziki ki so na voljo, ter absolutne poti do slovarjev, oz. do datotek s prevodi in<br />
referenčnih datotek.<br />
3.5.4. Delovanje razreda<br />
V oknu za nastavitve aplikacije na začetku nastavimo jezik katerega želimo uporabljati.<br />
Ko nastavimo jezik in kliknemo Shrani, se izbrane nastavitve shranijo v inicializacijsko datoteko
“.ini”, kjer se shrani izbrani jezik. Izbrane nastavitve ostanejo privzete, in se bodo ob vsakem<br />
zagonu programa znova upoštevale, dokler jih spet ne spremenimo v nastavitvah. Za uporabo<br />
nastavitev je potrebno program ponovno zagnati, da se nastavitve inicializirajo.<br />
[Import Language_Files]<br />
0=Default@E:\Projects\Merkur\MLMlanguage.txt@E:\Projects\Merkur\refLanguage.txt<br />
1=Deutsch@C:\MLMlanguage.txt@C:\refLanguage.txt<br />
Slika 3-12: Vnos v .ini datoteki<br />
Slika 3-13: Nastavitve<br />
Ob zagonu programa se ob vsakem kreiranju katerekoli forme oz. okna zažene funkcija<br />
za prevod, ki iz .ini datoteke prebere kateri jezik je izbran v nastavitvah ter kje so jezikovne<br />
datoteke, ki jih za prevod potrebuje, shranjene. Funkcija se nato pomika čez vse vizualne<br />
komponente v oknu, in preveri če je ime te komponente kje v datoteki. Če je komponenta<br />
najdena, preveri s kakšnim tipom komponente ima opravka, in nato glede na tip komponente<br />
prevede napis in morebitni namig.<br />
Obstajajo še nekatera besedila za prevod, ki se pa ne nahajajo na vizualnih komponentah,<br />
ampak se pojavljajo v programski kodi. Takšna besedila se prevedejo malo drugače, in sicer<br />
tako, da funkcija prestreže tekst kateri se mora prikazati, poišče če se kje ta tekst pojavlja, in kot<br />
rezultat vrne najdeni prevod ( v primeru da ga najde ).
Med izvajanjem programa ne sme prihajati do napak, zato so v primerih ko ne najde<br />
ustreznega prevoda, implementirane zaščite ki skrbijo za to, da se program lahko normalno<br />
nadaljuje.<br />
3.5.5. Zaključek<br />
Razred za prevajanje je omogočal enostavno in hitro uporabo več jezikov brez<br />
spreminjanja samega programa. Pred implementacijo funkcij je bil program razumljiv samo<br />
uporabnikom ki razumejo slovenski jezik. Vsako spreminjanje programa brez the funkcij bi bilo<br />
dolgo in mukotrpno delo. Za vsak drugi jezik bi bilo potrebno imeti svojo verzijo programa.<br />
Funkcije za prevod pa omogočajo uporabo istega programa v vsakem jeziku, brez spreminjanja<br />
samega programa.<br />
Ker so vse funkcije katere potrebujemo za prevajanje shranjene v istem razredu, lahko te<br />
funkcije uporabimo tudi pri drugih aplikacijah. Za vključitev in uporabo funkcij v programu<br />
potrebujemo le slovarje, v programski kodi so pa potrebne le minimalne spremembe.
4. Pridobljeno znanje in izkušnje<br />
V času opravljanja dela v podjetju Modan Informatika d.o.o sem spoznal, kako v praksi<br />
poteka delo v manjšem podjetju, ki se ukvarja z razvojem programskih produktov. Komaj s<br />
pomočjo dela v praksi sem lahko dokončno dojel nekatere teoretične stvari, ki sem jih spoznal v<br />
času študija na fakulteti. Seznanil sem se z mnogimi razvojnimi orodji (Delphi 7, ASP.NET, C#),<br />
podatkovnimi bazami(Access, MS SQL), programi za obdelovanje XML datotek ( XMLSpy ) in<br />
ostalimi orodji. Sodeloval sem pri mnogo različnih projektih in s tem pridobil velik spekter<br />
različnega znanja.<br />
Praksa je zelo pomemben del izobraževanja v računalništvu, saj študent na ta način pozna<br />
kako poteka delo v podjetju in si pridobi potrebno praktično znanje.
5. Mnenje o praksi<br />
Mislim, da praktično izobraževanje po končanih predavanjih zelo pozitivno vpliva na<br />
študente, saj se srečamo s praktičnimi primeri in težavami, ki jih prinašajo vsakodnevni problemi<br />
v poslovnem svetu.<br />
V okviru praktičnega izobraževanja naučil veliko novih stvari, pridobil pa sem tudi<br />
vpogled v delovanje nekaterih podjetij.