Увод у објектно оријентисано програмирање у Ц++ (1. дио)

Аутор: Амар Туфо

У овом серијалу бит ће представљен појам објектно орјентисаног програмирања креирањем практичног програма, те употреба класа и објеката као једног од основних новина објектно орјентисаног програмирања у Ц++ програмском језику. Основни циљ је да се нешто искуснији хобисти, студенти и програмери упознају са начином креирања класе у засебној датотеци познатој као заглавље, њено позивање у програму, креирање објекта, те употреба мутатора и аксесора како би се поставиле вриједности одређеним типовима података. Овај стручни чланак који је настао у потпуности на Убунту Линукс дистрибуцији као платформи, демонстрира употребу Емакса као текст едитора, те компајлирање Ц++ датотека употребом ГНУ/Г++ компајлера. Цио завршни пројекат је доступан на мом гитхабу, па уколико сте упознати са употребом Гитхаба, овај пројекат можете клонирати на своје рачунало како бисте га проширили, извели модификације те додали неке нове додатке.

Кратак увод у објектно орјентисано програмирање

Прије него ли кренемо у детаље разрађивати овај чланак, имам ту потребу да најприје нешто кажемо о објектно орјентисамом програмирању, зашто је оно важно за Ц++ програмски језик, које су предности и карактеристике овог начина развоја софтвера итд. Када се погледа на данашњи софтвер, можемо слободно рећи да је он доступан не само на Десктоп платформама, него и мобилним, па и у клауду. Ово можемо захвалити првенствено новим програмским језицима као што су ПХП, Пајтон, Јава, Ц++, ВБ.НЕТ, Руби Он Реилс и многи други програмски језици који су омогућили лако портање софтвера, не само на друге платформе него и у друге програмске језике. Није увијек тако било. Наиме, 1960-их година, програмери су се нашли у великим проблемима развоја софтвера. Велик број људи се ангажовао на развоју једног пројекта који је наравно требало да убрза процес његовог развоја, али није. Софтвер је постао скуп не само за развој него и његово одржавање, постао је нестабилан и баговит и поврх свега, крајњи корисници су били незадовољни али и захтјевни. Ово је касније постало познато у информатици као софтверска криза. Програмери су трагали за рјешењем овог проблема, те се као одговор на софтверску кризу јавља објектно oрјентисано програмирање. Дакле, oбјектно орјентисано програмирање, ООП настаје као одговор на тзв. софтверску кризу коју су изазвали сами програмери. Они су људима показали што све један рачунар може, пуно више од онога што су мислили и они као творци софтвера, те крајњи корисници њиховог софтвера. Међутим, ООП уводи својеврсну револуцију у начину израде софтвера у чијем примарном фокусу се налази објекат. Стога, ООП те Ц++ као објектно орјентирани програмски језик у развој софтвера уносе ова рјешења:

Апстракција типова података (енг. Apstract Data Tupes) – као што у Ц-у или у неком другом програмском језику постоје уграђени типови података (интиџер, карактер …), тако у језику Ц++ корисник може произвољно дефинисати своје типове података (класе), те их равноправно користити тијеком развоја свог софтвера.

Енкапсулација (енг. encapsulation) – реализација неког типа може (и треба) да се сакрије од остатка система (од оних који га користе). Треба корисницима типа прецизно дефинисати само шта се са типом може радити, начин како се то ради, односно сакрива, дефинише се интерно.

Насљеђивање (енг. inheritance) – претпоставимо да је већ формиран тип printer који има операције print_line, line_feed, form_feed, goto_xy итд, те да је његовим кориштењем већ реализована велика количина софтвера. Новост је да је фирма набавила и штампаче који имају богат скуп стилова писма и жеља је да се они убудуће искористе. Стога нема потребе правити нови тип штампача, довољно је само креирати нови тип PrinterWithFonts који је као наш „обични штампач” само што још може да мјења стилове штампе. Нови тип ће наслиједити све особине старог, али ће бити у стању да изведе и друге облике операција.

Полимофизам (енг. polymorphism) – пошто је PrinterWithFonts већ ионако Printer, нема разлога да остатак програма „не види” њега као обичан штампач, све док му нису потребне нове могућности штампача. Раније написани дјелови програма који користе тип Printer не морају се уопште претпостављати, они ће једнако добро радити и са новим типом. Карактеристика да се нови тип „одазива” на прави начин, иако га је корисник „позвао” као да је стари тип, назива се полимофизам.

С обзиром на то да је Ц++ боља „иначица” Ц-а-, он опет није „чисто” објектно орјентисан програмски језик. Ствар је у томе што Ц++ омогућава реализацију комплексног софвера употребом ООП концепта доста ефикасније него што је то био случај са процедуралним програмирањем (Паскал је један такав програмски језик). Наведене карактеристике ООП су пријеко потребне уколико се приступа развоју игара које користе све наведене концепте ,а знамо како је Ц++ индустријски стандард када се говори о тој области информатике.

Можемо на крају сумирати како Ц++ у комбинацији са ООП техником програмирања омогућава развој много бољег, стабилнијег софтвера који је лако портабилан, мулти платформски, лак за дебаговање итд. С друге стране, ООП уводи другачији начин размишљања програмирања, гдје се на комплексне цјелине софтвера гледа као на реалне објекте што омогућава програмерима да раде на једном објекту, реализацији једне функције софтвера те склапање тих објеката у једну цјелину чиме се добија готов софтвер. Дакле, у ООП-у, размишља се о дјеловима система (објектима) који нешто раде, а не о томе како се нешто ради (алгоритмима). Пажња се пребацује са реализације на међусобне везе између дјелова. Настоји се смањити интеракција између софтверских дјелова итд. У другом дијелу ћемо се упознати детаљније са појмом објеката и класа, начином њихове израде и примјене у Ц++ програмском језику кроз практичан примјер. До читања.

Наставак

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *

Time limit is exhausted. Please reload CAPTCHA.