35
Objektovo-orientovan Objektovo-orientovan é é programovanie programovanie

Objektovo-orientovan é programovanie

  • Upload
    felice

  • View
    57

  • Download
    0

Embed Size (px)

DESCRIPTION

Objektovo-orientovan é programovanie. Motivácia. Predstavme si firmu pozostávajúcu z jedného človeka. Organizácia takejto firmy je najjednoduchšia možná, ale množstvo práce, ktoré jeden človek dokáže vykonať, je obmedzené. - PowerPoint PPT Presentation

Citation preview

Page 1: Objektovo-orientovan é  programovanie

Objektovo-orientovanObjektovo-orientované é programovanieprogramovanie

Page 2: Objektovo-orientovan é  programovanie

MotiváciaMotivácia Predstavme si firmu pozostávajúcu z jedného človekaPredstavme si firmu pozostávajúcu z jedného človeka

Organizácia takejto firmy je najjednoduchšia Organizácia takejto firmy je najjednoduchšia možná, ale množstvo práce, ktoré jeden človek možná, ale množstvo práce, ktoré jeden človek dokáže vykonať, je obmedzené.dokáže vykonať, je obmedzené.

V programovaní takáto firma zodpovedá V programovaní takáto firma zodpovedá programu, v ktorom všetky príkazy vykonáva programu, v ktorom všetky príkazy vykonáva hlavný program.hlavný program.

Page 3: Objektovo-orientovan é  programovanie

MotiváciaMotivácia Teraz si predstavme malú firmu s tromi zamestnancamiTeraz si predstavme malú firmu s tromi zamestnancami

Každý zamestnanec má svoje úlohy, čím sa Každý zamestnanec má svoje úlohy, čím sa ľahšie organizuje práca. Jeden zamestnanec je ľahšie organizuje práca. Jeden zamestnanec je nadriadený ostatným dvom a prideľuje úlohy im nadriadený ostatným dvom a prideľuje úlohy im aj sebe.aj sebe.

V programovaní by išlo o program s hlavným V programovaní by išlo o program s hlavným programom a dvomi ďalšími funkciami.programom a dvomi ďalšími funkciami.

Page 4: Objektovo-orientovan é  programovanie

MotiváciaMotivácia Teraz majme väčšiu firmuTeraz majme väčšiu firmu

Každý zamestnanec predstavuje v programe Každý zamestnanec predstavuje v programe jednu funkciu. Organizácia takejto firmy, resp. jednu funkciu. Organizácia takejto firmy, resp. programu, môže už byť dosť chaotická.programu, môže už byť dosť chaotická.

Page 5: Objektovo-orientovan é  programovanie

MotiváciaMotivácia Riešenie – vytvoríme oddeleniaRiešenie – vytvoríme oddelenia

manažmentmanažment výrobavýroba

personálnpersonálnee

oddelenieoddelenie

finančnéfinančné

oddelenieoddelenie

bezpečnosťbezpečnosť

údržbaúdržba

V objektovo orientovanom programovaní je program kvôli prehľadnosti tiež rozdelený V objektovo orientovanom programovaní je program kvôli prehľadnosti tiež rozdelený na na ““oddeleniaoddelenia”.”.

Page 6: Objektovo-orientovan é  programovanie

Objektovo orientované Objektovo orientované programovanieprogramovanie

Je to efektívny spôsob organizácie programu Základný princíp: : celcelá funkčnosť programu je á funkčnosť programu je

logicky rozdelená do menších celkov – tried. logicky rozdelená do menších celkov – tried. Vykonávanie väčšiny príkazov programu potom Vykonávanie väčšiny príkazov programu potom zabezpečujú objekty týchto tried.zabezpečujú objekty týchto tried.

História: OOP vzniklo v období, keď bežné : OOP vzniklo v období, keď bežné programy začali presahovať určitú dĺžku a programy začali presahovať určitú dĺžku a procedurprocedurálne programy sa stali neprehľadnými. álne programy sa stali neprehľadnými. Bežne sa začalo využívať začiatkom 90. rokovBežne sa začalo využívať začiatkom 90. rokov

Hlavná výhoda: dobre navrhnutá objektová : dobre navrhnutá objektová štruktúra programu umožňuje oveľa lepšiu štruktúra programu umožňuje oveľa lepšiu orientáciu v kódeorientáciu v kóde

Page 7: Objektovo-orientovan é  programovanie

Princíp OOPPrincíp OOP

Filozofia OOP je postavená na usporiadaní Filozofia OOP je postavená na usporiadaní reálneho svetareálneho sveta

Základné pojmy OOP: Základné pojmy OOP: trieda a a objekt Tri základné princípy:Tri základné princípy:

Zapúzdrenie (encapsulation) (encapsulation)Mnohotvárnosť (polymorphism) (polymorphism)Dedičnosť (inheritance) (inheritance)

Page 8: Objektovo-orientovan é  programovanie

TriedaTrieda

Je to štrukturovaný dátový typ charakterizovaný vlastnosťami (dáta, atribúty) (dáta, atribúty) a schopnosťami (metódy)(metódy)

Príklad: trieda ČlovekPríklad: trieda Človek

Vlastnosti: meno, vek, výška, váha, farba vlasov...Vlastnosti: meno, vek, výška, váha, farba vlasov... Schopnosti: predstaviť sa, povedať svoj vek, miery Schopnosti: predstaviť sa, povedať svoj vek, miery

atď., opýtať sa iného človeka na jeho meno, vek...atď., opýtať sa iného človeka na jeho meno, vek...

Page 9: Objektovo-orientovan é  programovanie

ObjektObjekt

Konkrétny prvok triedy – premenná príslušného dátového typu – s jednoznačne danými vlastnosťami

Janko KováčJanko Kováč Majka NovákováMajka Nováková

45 rokov45 rokov 35 rokov35 rokov

svetlohnedé vlasy, 180 cmsvetlohnedé vlasy, 180 cm hnedé vlasy, 165 cmhnedé vlasy, 165 cm

Page 10: Objektovo-orientovan é  programovanie

Objektovo orientovaný Objektovo orientovaný program program

1. Definícia triedy

Trieda Trieda ČlovekČlovek{{

znakový reťazec meno celé číslo vek znakový reťazec farba_vlasov celé číslo výška Zapíš_si_svoje_údaje Predstav_sa Povedz_svoj_vek Povedz_svoju_výšku

}}

Dáta - vlastnosti

Metódy - schopnosti

Page 11: Objektovo-orientovan é  programovanie

Objektovo orientovaný Objektovo orientovaný programprogram

2. Definícia metód

Človek::Človek::Zapíš_si_svoje_údaje

{{meno = ... = ...vek = ... = ...farba_vlasov = ... = ...výška = ... = ...

}}

Page 12: Objektovo-orientovan é  programovanie

Objektovo orientovaný Objektovo orientovaný programprogram

Človek::Človek::Predstav_sa{{

Povedz Povedz ““Ahoj, ja somAhoj, ja som”” meno}}

Človek::Človek::Povedz_svoj_vek{{

Povedz “MPovedz “Mámám” ” vek “rokov” “rokov”}}

Človek:Človek:Povedz_svoju_výšku{{

Povedz “MPovedz “Mámám” ” výška “centimetrov”“centimetrov”}}

Page 13: Objektovo-orientovan é  programovanie

Objektovo orientovanObjektovo orientovaný ý programprogram

3. Vytvorenie a použitie objektov

Človek Človek Janko, , Majka

Janko..Zapíš_si_svoje_údajeMajka..Zapíš_si_svoje_údajeJanko..Predstav_saJanko..Povedz_svoj_vekJanko..Povedz_svoju_výškuMajka..Predstav_saMajka..Povedz_svoj_vekMajka..Povedz_svoju_výšku

Page 14: Objektovo-orientovan é  programovanie

Objektovo orientovaný Objektovo orientovaný program program

4. Výstup

Ahoj, ja som Janko KováčAhoj, ja som Janko Kováč Ahoj, ja som Majka Ahoj, ja som Majka NovákováNováková

Mám 45 rokovMám 45 rokov Mám 35 rokovMám 35 rokov

Mám 180 centimetrovMám 180 centimetrov Mám 165 centimetrovMám 165 centimetrov

Page 15: Objektovo-orientovan é  programovanie

ZapúzdrenieZapúzdrenie

Mechanizmus, ktorý zväzuje dohromady dáta a kódMechanizmus, ktorý zväzuje dohromady dáta a kód V úplne objektovo orientovanom programe

patria všetky dáta a funkcie nejakej triede (okrem hlavného programu)(okrem hlavného programu)

Zapúzdrenie Zapúzdrenie (encapsulation) (encapsulation) umožňuje lepšiu umožňuje lepšiu prehľadnosť programu a najmä môže chrániť dáta prehľadnosť programu a najmä môže chrániť dáta pred nežiadúcimi zásahmi zvonkupred nežiadúcimi zásahmi zvonku

Vo vnútri triedy môžu byť všetky dáta alebo metódy Vo vnútri triedy môžu byť všetky dáta alebo metódy definované akodefinované akosúkromné - prístupné len pre triedu samotnú - prístupné len pre triedu samotnúverejné – prístupné aj pre ostatné triedy – prístupné aj pre ostatné triedy

Page 16: Objektovo-orientovan é  programovanie

ZapúzdrenieZapúzdrenie

Trieda Trieda ČlovekČlovek

{{verejné:znakový reťazec meno Predstav_sa

}}

Človek Človek Majka

Majka.Predstav_sa.Predstav_saPovedz “Ahoj, ja som” Majka..menomeno

Page 17: Objektovo-orientovan é  programovanie

ZapúzdrenieZapúzdrenieTrieda Trieda ČlovekČlovek

{{súkromné:znakový reťazec meno verejné:Predstav_sa

}}

Človek Človek Majka

Majka.Predstav_sa.Predstav_saPovedz “Ahoj, ja som” Majka..menomeno

Page 18: Objektovo-orientovan é  programovanie

Technika Data hidingTechnika Data hiding

Je to najbezpečnejší a najbežnejší spôsob návrhu Je to najbezpečnejší a najbežnejší spôsob návrhu triedtried

Základný princíp:Základný princíp:všetky dáta sú súkromnétrieda má vytvorený interface, teda metódy, , teda metódy, ktoré umožňujú zmenu a sprostredkovanie dát, ak ktoré umožňujú zmenu a sprostredkovanie dát, ak je to potrebnéje to potrebné

Takto sa zabezpečí, že pri použití triedy sú Takto sa zabezpečí, že pri použití triedy sú prístupné a meniteľné len tie dáta, ktorým to dovolí prístupné a meniteľné len tie dáta, ktorým to dovolí interface, čo je dôležité napr. pri programovaní interface, čo je dôležité napr. pri programovaní knižníc, ktoré budú používať iní programátori a pod.knižníc, ktoré budú používať iní programátori a pod.

Page 19: Objektovo-orientovan é  programovanie

Technika Data hidingTechnika Data hiding Korektne navrhnutá trieda ČlovekKorektne navrhnutá trieda Človek

Trieda Trieda ČlovekČlovek{{

súkromné:znakový reťazec meno celé číslo vekznakový reťazec farba_vlasovcelé číslo výškaverejné:Zapíš_si_svoje_údajePredstav_saPovedz_svoj_vekPovedz_svoju_výšku

}}

Page 20: Objektovo-orientovan é  programovanie

Konštruktor a deštruktorKonštruktor a deštruktor

Sú to funkcie, ktoré sa automaticky spustia pri Sú to funkcie, ktoré sa automaticky spustia pri vytvorení (konštruktor) a pri zániku (deštruktor) vytvorení (konštruktor) a pri zániku (deštruktor) objektu danej triedyobjektu danej triedy

Konštruktor sa používa najmä na počiatočné sa používa najmä na počiatočné nastavenie hodnoty dát daného objektu a na nastavenie hodnoty dát daného objektu a na alokáciu potrebnej pamätealokáciu potrebnej pamäte

Deštruktor sa používa na sa používa na “up“upratanieratanie”, teda ”, teda hlavne hlavne na dealokna dealokáciu vyhradenej pamäteáciu vyhradenej pamäte

Page 21: Objektovo-orientovan é  programovanie

Konštruktor a deštruktorKonštruktor a deštruktor Modifikovaná trieda ČlovekModifikovaná trieda Človek

Trieda Trieda ČlovekČlovek{{

súkromné:znakový reťazec meno pole celých čísel miery (smerník na celé číslo)

verejné:Konštruktor DeštruktorPredstav_saPovedz_svoj_vekPovedz_svoju_výšku

}}

Page 22: Objektovo-orientovan é  programovanie

Konštruktor a deštruktorKonštruktor a deštruktor

Človek::Človek::Konštruktor{{

Alokuj pamäťové miesto na Alokuj pamäťové miesto na mierymiery[1]= … (vek)[1]= … (vek)miery[2]= … (v[2]= … (výška)ýška)miery[3]= … ([3]= … (váhaváha))......

}}

Človek::Človek::Deštruktor{{

Dealokuj miesto vyhradené pre Dealokuj miesto vyhradené pre miery}}

Page 23: Objektovo-orientovan é  programovanie

PolymorfizmusPolymorfizmus

Ide o mnohotvárnosť, resp. viacúčelové využitie metód

Metóda s jedným názvom môže byť použitá pre Metóda s jedným názvom môže byť použitá pre rôzne typy dát alebo rôzny počet vstupov, čo rôzne typy dát alebo rôzny počet vstupov, čo uľahčuje orientáciu v programeuľahčuje orientáciu v programe

Page 24: Objektovo-orientovan é  programovanie

PolymorfizmusPolymorfizmus

Definujeme triedu Kalkulačka, ktorá bude počítať absolútne Definujeme triedu Kalkulačka, ktorá bude počítať absolútne hodnotyhodnoty

1. Trieda 1. Trieda KalkulačkaKalkulačka 2. Trieda 2. Trieda KalkulačkaKalkulačka

{{ {{

verejné: verejné:

celcelé číslo é číslo iabs(celé číslo)(celé číslo) celé číslo celé číslo abs(celé číslo)(celé číslo)

reálne číslo reálne číslo fabs(reálne číslo)(reálne číslo) reálne číslo reálne číslo abs(reálne číslo)(reálne číslo)

súkromné: súkromné:

celé číslo celé číslo výsledok_i celé číslo výsledok_i

celé číslo celé číslo výsledok_f reálne číslo výsledok_f

}} }}

Page 25: Objektovo-orientovan é  programovanie

DedičnosťDedičnosť

KaKaždá trieda môže mať svoje ždá trieda môže mať svoje ““dieťadieťa””, teda triedu, , teda triedu, ktorá je od nej odvodená, preberá všetky jej dáta ktorá je od nej odvodená, preberá všetky jej dáta a metódy (okrem konštruktora a deštruktora)a metódy (okrem konštruktora a deštruktora)

Odvodená trieda môže byť potomkom Odvodená trieda môže byť potomkom ľubovoľného počtu tried a každá trieda môže mať ľubovoľného počtu tried a každá trieda môže mať ľubovoľný počet potomkovľubovoľný počet potomkov

Pre rodičovskú triedu je možné sprístupniť svojim Pre rodičovskú triedu je možné sprístupniť svojim potomkom svoje súkromné dáta, takéto dáta sa potomkom svoje súkromné dáta, takéto dáta sa nazývajú nazývajú chránené a okrem samotnej triedy a jej a okrem samotnej triedy a jej podtried nie sú inak zvonku prístupnépodtried nie sú inak zvonku prístupné

Page 26: Objektovo-orientovan é  programovanie

DedičnosťDedičnosť

Trieda Trieda TovarTovar::

vvýrobcaýrobca

cenacena

Trieda Trieda PotravinaPotravina::

vvýrobcaýrobca

cenacena

dátum spotrebydátum spotreby

Trieda Trieda ObuvObuv::

vvýrobcaýrobca

cenacena

veľkosťveľkosť

Trieda Trieda ZeleninaZelenina::

vvýrobcaýrobca

cenacena

dátum spotrebydátum spotreby

trieda akostitrieda akosti

Page 27: Objektovo-orientovan é  programovanie

DedičnosťDedičnosť

Trieda Trieda Rodič:Rodič:verejné:Predstav_saPovedz_adresuchránené:menoadresasúkromné:PIN

Trieda Trieda Dieťa:Dieťa:Predstav_saPovedz_adresuPovedz_zákonného_zástupcumenoadresazákonný_zástupcaPIN – neprístupné!

Page 28: Objektovo-orientovan é  programovanie

DedičnosťDedičnosť

Trieda Trieda TovarTovar::

cenacena

dodávateľdodávateľ

Trieda Trieda RastlinaRastlina::

názov_rastlinynázov_rastliny

Trieda Trieda DarDar::

od_kohood_koho

pre_kohopre_koho

Trieda Trieda KyticaKytica::

cenacena

dodávateľdodávateľ

názov_rastlinynázov_rastliny

od_kohood_koho

pre_kohopre_koho

adresa_doručeniaadresa_doručenia

Page 29: Objektovo-orientovan é  programovanie

Virtuálne metódyVirtuálne metódy

Ak je metóda rodičovskej triedy virtuálna, Ak je metóda rodičovskej triedy virtuálna, znamená to, že potomok, ktorý ju zdedí, si ju znamená to, že potomok, ktorý ju zdedí, si ju môže zmeniť podľa svojich potriebmôže zmeniť podľa svojich potrieb

Metóda Metóda Predstav_sa::

Volám sa Peter SlovákVolám sa Peter Slovák

Bývam v BratislaveBývam v Bratislave

Metóda Metóda Predstav_sa::

Volám sa Miro SlovákVolám sa Miro Slovák

Bývam v BratislaveBývam v Bratislave

Môj otec je Peter SlovákMôj otec je Peter Slovák

Metóda Metóda Predstav_sa::

Ahoj, som Miro SlovákAhoj, som Miro Slovák

Môj otec je Peter SlovákMôj otec je Peter Slovák

Page 30: Objektovo-orientovan é  programovanie

Spriatelené triedySpriatelené triedy Každá trieda môže iným triedam umožniť prístup k Každá trieda môže iným triedam umožniť prístup k

svojim súkromným dátam, ak ich označí ako spriatelenésvojim súkromným dátam, ak ich označí ako spriatelené

Trieda Trieda Rodič:Rodič:

spriatelená trieda spriatelená trieda DieťaDieťaverejné:Predstav_sachránené:menosúkromné:PIN

Trieda Trieda Dieťa:Dieťa:Predstav_saPovedz_zákonného_zástupcumenozákonný_zástupcaPIN

Page 31: Objektovo-orientovan é  programovanie

NNávrh objektovo orientovaného ávrh objektovo orientovaného programuprogramu

AnalýzaAnalýza

DizajnDizajn

ImplementáciImplementáciaa

TestovanieTestovanie

Page 32: Objektovo-orientovan é  programovanie

NNávrh objektovo orientovaného ávrh objektovo orientovaného programuprogramu

Objektovo orientovaná analýza – analyzuje sa funkčnosť programu a navrhuje sa zoznam tried, z ktorých bude program pozostávať a ich vzájomná komunikácia. – analyzuje sa funkčnosť programu a navrhuje sa zoznam tried, z ktorých bude program pozostávať a ich vzájomná komunikácia. Objektovo orientovaný dizajn – navrhuje sa už presný obsah tried, typy dát, parametrov metód a podobne. Takisto sa navrhujú objekty tried, ktoré budú v – navrhuje sa už presný obsah tried, typy dát, parametrov metód a podobne. Takisto sa navrhujú objekty tried, ktoré budú v

programe vystupovať. Výsledkom je konkrétny návod, ako program naprogramovať.programe vystupovať. Výsledkom je konkrétny návod, ako program naprogramovať. Implementácia – ide o samotné napísanie kódu. – ide o samotné napísanie kódu. Testovanie – testuje sa, či program správne funguje. Ak nie, je potrebný návrat na niektorý z predchádzajúcich krokov. – testuje sa, či program správne funguje. Ak nie, je potrebný návrat na niektorý z predchádzajúcich krokov.

Page 33: Objektovo-orientovan é  programovanie

ZhrnutieZhrnutie

Objektovo orientované programovanie je spôsob efektívnej organizácie programu, pri ktorom je program súborom navzájom spolupracujúcich objektov

V úplne objektovo orientovanom programe sú všetky dáta a funkcie (okrem hlavného programu a globálnych premenných) súčasťou nejakej triedy

Základné princípy objektovo orientovaného programovania sú:ZapúzdreniePolymorfizmusDedičnosť

Page 34: Objektovo-orientovan é  programovanie

Objektovo orientované Objektovo orientované jazykyjazyky

Simula(1967) – prvý OO jazyk, používaný na simulácie pri konštrukcii (1967) – prvý OO jazyk, používaný na simulácie pri konštrukcii integrovaných obvodov, na počítačovú grafiku, vzdelávanie a pod.integrovaných obvodov, na počítačovú grafiku, vzdelávanie a pod.

C++(1983) – jeden z najrozšírenejších komerčne používaných jazykov, (1983) – jeden z najrozšírenejších komerčne používaných jazykov, s množstvom aplikácií, umožňuje OO aj procedurálne programovanies množstvom aplikácií, umožňuje OO aj procedurálne programovanie

Common Lisp – – dynamickdynamický jazyk umožňujúci veľmi všeobecné ý jazyk umožňujúci veľmi všeobecné operácie, s veľkým množstvom dátových typov, využíva sa na operácie, s veľkým množstvom dátových typov, využíva sa na programovanie internetových aplikácií, dizajnérskych softvérov, hier programovanie internetových aplikácií, dizajnérskych softvérov, hier atď.atď.

Java(1995) – jazyk vyvinutý tak, aby umožňoval spúšťanie programov (1995) – jazyk vyvinutý tak, aby umožňoval spúšťanie programov na rôznych platformách (zdrojové kódy sa kompilujú do tzv. byte kódu na rôznych platformách (zdrojové kódy sa kompilujú do tzv. byte kódu nezávislého na platforme) a zo vzdialených zdrojov, so zabudovanou nezávislého na platforme) a zo vzdialených zdrojov, so zabudovanou podporou siete, používa sa v softvéroch pre spotrebnú elektroniku, v podporou siete, používa sa v softvéroch pre spotrebnú elektroniku, v internetových aplikáciách, bankovníctve, finančníctve.internetových aplikáciách, bankovníctve, finančníctve.

JavaScript(1995) – skriptovací jazyk (inštrukcie sa vykonávajú priamo z (1995) – skriptovací jazyk (inštrukcie sa vykonávajú priamo z kódu, bez kompilácie) vyvinutý na tvorbu internetových aplikáciíkódu, bez kompilácie) vyvinutý na tvorbu internetových aplikácií

Perl(1987) – dynamický jazyk pôvodne vyvinutý pre spracovanie (1987) – dynamický jazyk pôvodne vyvinutý pre spracovanie textov, dnes má využitie pri programovaní internetových aplikácií, pri textov, dnes má využitie pri programovaní internetových aplikácií, pri správe systémov a pod., je efektívny pri manipulácii s reťazcami a správe systémov a pod., je efektívny pri manipulácii s reťazcami a správe pamätespráve pamäte

Page 35: Objektovo-orientovan é  programovanie

Objektovo orientované Objektovo orientované jazykyjazyky

PHP(1994) – skriptovací programovací jazyk, používaný najmä pri (1994) – skriptovací programovací jazyk, používaný najmä pri vývoji dynamických web stránokvývoji dynamických web stránok

Python(1980) – jazyk podporujúci rôzne programátorské techniky, s (1980) – jazyk podporujúci rôzne programátorské techniky, s dôrazom na ľahko čitateľný kód, mnohé softvéry ho používajú ako svoj dôrazom na ľahko čitateľný kód, mnohé softvéry ho používajú ako svoj skriptovací jazykskriptovací jazyk

Smalltalk(1970) – čisto objektovo orientovaný reflektívny jazyk (1970) – čisto objektovo orientovaný reflektívny jazyk (program môže meniť svoju štruktúru počas behu), vyvinutý pôvodne (program môže meniť svoju štruktúru počas behu), vyvinutý pôvodne na vzdelávacie účely, ale neskôr našiel aj bohaté komerčné uplatneniena vzdelávacie účely, ale neskôr našiel aj bohaté komerčné uplatnenie

Visual Basic – jazyk riadený udalosťami (beh programu závisí od – jazyk riadený udalosťami (beh programu závisí od interakcie s užívateľom), má veľmi veľké využitie v oblasti business interakcie s užívateľom), má veľmi veľké využitie v oblasti business aplikáciíaplikácií

TCL – skriptovací jazyk s jednoduchou syntaxou, vyvinutý so zámerom – skriptovací jazyk s jednoduchou syntaxou, vyvinutý so zámerom stať sa súčasťou rôznych aplikáciístať sa súčasťou rôznych aplikácií

C# – – jazyk podobnjazyk podobný C++, avšak s väčším dôrazom na bezpečnosť ý C++, avšak s väčším dôrazom na bezpečnosť kódu (kontrola hraníc polí, zabezpečovanie dealokácie pamäti, kódu (kontrola hraníc polí, zabezpečovanie dealokácie pamäti, kontrola dátových typov atď.), ktorý bol vyvinutý pre spoluprácu kontrola dátových typov atď.), ktorý bol vyvinutý pre spoluprácu s .NET Framework a pre tvorbu komplexných aplikácií s s .NET Framework a pre tvorbu komplexných aplikácií s bezproblémovou prenosnosťou na rôzne počítačebezproblémovou prenosnosťou na rôzne počítače