Иди на текст

Увод

У претходне две године научио си доста о програмирању у програмском језику C. Већ у првим лекцијама напоменуто је да се програмски језик C, ако се говори о подели програмских језика према начину програмирања, сврстава у императивне процедуралне програмске парадигме. У императивној програмској парадигми користе се наредбе које мењају стање програма - експлицитно се задаје начин којим се долази до решења. Поред тога, програмски језик C подржава структурирано програмирање зато што се у великој мери користе структурирана контрола тока, блокови и потпрограми.

Ако се говори о подели програмских језика према начину програмирања, програмски језик C# (енгл. C Sharp) може се сврстати у више парадигми, а првенствено у императивне објектно-оријентисане парадигме засноване на класама. Људи су склони да све класификују на основу одлика и понашања. На пример, ко има крила и може да лети класификује се у птице, ко има пераја и може да дише под водом класификује се у рибе итд. Људи поседују умеће да 11000 различитих врста птица и 33100 различитих врста риба класификују у две класе - птице и рибе, што је свакако једна од важних карактеристика људи.

Пошто је код људи умеће класификације укорењено у размишљању и говору, било је само питање времена када ће се то умеће применити и у програмирању. Приметио си да програмирањем увек решаваш неке проблеме. Логично је онда да ћеш покушати да класификујеш решења тих проблема и формализујеш их у неком програмском језику. Ако ти је задатак да креираш програм за вођење евиденције ученика свог одељења, основни објекат којег посматраш је ученик. Сваки ученик има неке одлике, нпр. име, презиме, ЈМБГ, адресу, број телефона и сл. Такође, за сваког ученика треба да дефинишеш неке акције, нпр. "упиши на списак", "измени унете податке", "обриши са списка" итд. Значи, умећем класификације, све ученике у одељењу, односно све посматране објекте, класификовао би у класу Ученик која има атрибуте Име, Презиме, ЈМБГ, Адреса, Телефон итд, и која има методе Упиши(), Измени(), Обриши() итд. Један примерак, односно инстанца класе Ученик био би један објекат, односно један ученик са списка. Значи, поред основних и изведених типова података које си користио у програмском језику C, програмски језик C# омогућује ти да дефинишеш класе у којима се комбинују атрибути (подаци) и методе (акције).

Поред тога, у програмском језику C# и осталим савременим објектно-оријентисаним програмским језицима, класе које се често користе унапред су представљене "уграђеним класама". На пример, већина апликација нешто чита из датотека, односно нешто уписује у датотеке. Логично је онда да треба унапред дефинисати класу Датотека, која за дефинисану путању до датотеке и њено име, има методе Креирај(), Обриши(), Копирај() и слично. Овим се губи потреба да сваки програмер дефинише своју класу за рад са датотекама, јер су творци програмског језика то учинили унапред за њега, на најбољи могући начин.

Поглавље о основним концептима објектно-оријентисаног програмирања

У овом уводном поглављу "Основни концепти објектно-оријентисаног програмирања" упознаћеш се са основним концептима који су заједнички за већину савремених објектно-оријентисаних језика (C#, C++, Java...). Циљ овог поглавља је да те упозна са основним разликама између парадигми структурираног програмирања у програмском језику C и објектно-оријентисаног програмирања у програмском језику C#.

У поглављима која следе, научићеш основе програмирања у програмском језику C#, основе објектно-оријентисаног програмирања у програмском језику C#, као и основе развоја апликација са графичким корисничким интерфејсом.

Кратак историјат развоја ООП

Објектно-оријентисана парадигма у програмирању није нова, нити револуционарна. Настала је шездесетих година прошлог века развојем програмског језика Simula у Норвешком рачунарском центру (норв. Norsk Regnesentral) у Ослу. Паралелно са развојем програмског језика Simula, на универзитету MIT (енгл. Massachusetts Institute of Technology), идеје о објектима препознате су у програмским језицима LISP и ALGOL. Тадашњи рачунарски системи, по данашњим стандардима, били су изузетно слаби по питању брзине, процесорске моћи и меморије. Софтвер који се на њима користио, опет по данашњим стандардима, решавао је изузетно једноставне проблеме. Велика промена десила се појавом програмског језика C и "преписивањем" оперативних система са асемблерских језика на C језик. Тада још није било говора о широкој употреби ООП језика, јер су се сви проблеми успешно решавали структурираним програмирањем. Програмски језик C био је неприкосновен програмски језик системског програмирања, а програмски језик Pascal омиљен програмски језик у академским круговима.

Осамдесетих година, заједно са растом брзине, процесорске моћи и меморије рачунара, расли су и апетити корисника. Софтвер је постајао све комплекснији и захтевнији, а рачунари су почели да се примењују у свим људским делатностима. Тада су мане структурираног програмирања изашле на видело. Било је тешко пратити стање стотина променљивих и стотина функција распоређених у различитим датотекама, а још теже вршити измене на таквом коду, чак и када је у питању био беспрекорно уредан кôд, где се изузетно водило рачуна о области важења променљивих. Замисли да у програмском језику C треба да напишеш програм за електронски дневник, па да након тога, када се деси измена у неком закону или правилнику у области образовања, модификујеш програмски кôд како би се уважила та измена. То би био изузетно тежак и мукотрпан задатак.

Крајем седамдесетих година, Bjarne Stroustrup, научник из области рачунарских наука из Данске, започео је развој програмског језика C са класама, са идејом да се стандардном C компајлеру додају одлике постојећих објектно-оријентисаних језика. Касније, 1982. године, одустао је од идеје за надоградњом постојећег C компајлера и започео развој новог програмског језика C++, где ++ представља инкремент оператор. 1985. године објављена је књига "The C++ Programming Language" и овај програмски језик је по први пут комерцијално имплементиран. C++ је био компатибилан са тада најпопуларнијим програмским језиком C, што је програмерима омогућило да задрже постојеће базе C кодова и уз то искористе бенефите објектно-оријентисаног програмирања.

Уследио је развој и других програмских језика који су користили ООП концепте. Развијени су Objective-C (објектно-оријентисани C за Apple рачунаре), Visual FoxPro 3.0 (објектно-оријентисани језик за рад са базама података), Delphi (објектно-оријентисани Pascal), Java (објектно-оријентисани језик опште намене компаније Oracle), као и Visual Basic и C# (објектно-оријентисани језици опште намене компаније Microsoft). Више о самом програмском језику C# учићеш у следећем поглављу.