OOP
25 отговора
383 прегледа
OOP
Kato govorite za DELPHI az se 4udeh dali
moje da se programira obektno i mostiga li se nivoto na c++?
moje da se programira obektno i mostiga li se nivoto na c++?
Отг: OOP
To vse edno da pitash "S delphi mozhe li da se napishe programa pod Windows?"
Ne samo che mozhe ami i klasovete sa dosta dobre podredeni kato logica ot mfc primerno.
Deplphi <- +/- -> c++
Za nivoto. Sega ne e taka ama kato izleze Deplhi2 to mozheshe razni neshta deto c++ TRIABVASHE da gi mozhe.
Vse pak c++ e po-profesionalnia ezik. Ako naistina shte programirash a ne samo da nacukash razni formi
Ne samo che mozhe ami i klasovete sa dosta dobre podredeni kato logica ot mfc primerno.
Deplphi <- +/- -> c++
Za nivoto. Sega ne e taka ama kato izleze Deplhi2 to mozheshe razni neshta deto c++ TRIABVASHE da gi mozhe.
Vse pak c++ e po-profesionalnia ezik. Ako naistina shte programirash a ne samo da nacukash razni formi
Отг: OOP
10x Salle
po princip se u4a na C++ i napravo se u4udih kolko mnogo raboti moje da pravish i se 4udeh dali stava i s Delphi.Mnogo se zapalih po OOP.
Imam oste edno malko vapros4e : Imam li niakakva alternativa na MFC ako iskam da se zanimavam s
OOP s C++ ?
mercy predvaritelno!:)
po princip se u4a na C++ i napravo se u4udih kolko mnogo raboti moje da pravish i se 4udeh dali stava i s Delphi.Mnogo se zapalih po OOP.
Imam oste edno malko vapros4e : Imam li niakakva alternativa na MFC ako iskam da se zanimavam s
OOP s C++ ?
mercy predvaritelno!:)
Отг: OOP
MFC се дава от Microsoft за удобство на програмистите. Например, голяма част от нещата които често се повтарят са готови в класовете на MFC. Също и модела View + Document е удобен. (Иначе без MFC всеки би направил подобна структура и сам)
MFC е само за Visual C, разбира се.
Можеш винаги да работиш директно с API, да си направиш собствен модел на C++, да използваш STL, . . . Но така ще се лишиш от готовите решения на Microsoft и само ще губиш излишно време за проектите.
Освен това MFC е на по-вискоко ниво (по-независимо) от API, а Microsoft си поддържат MFC когато променят нещо във Windows в следващи версии.
Иначе OOP можеш да използваш и на чисто C! Модела не е нещо друго а една структура с променливите на обекта, и пойнтер към таблица от (виртуални) функции, приложими към обекта. Ако човек си позволи малко фантазия, може да измисли много други интересни структури и техники, подобни на OOP технологията.
MFC е само за Visual C, разбира се.
Можеш винаги да работиш директно с API, да си направиш собствен модел на C++, да използваш STL, . . . Но така ще се лишиш от готовите решения на Microsoft и само ще губиш излишно време за проектите.
Освен това MFC е на по-вискоко ниво (по-независимо) от API, а Microsoft си поддържат MFC когато променят нещо във Windows в следващи версии.
Иначе OOP можеш да използваш и на чисто C! Модела не е нещо друго а една структура с променливите на обекта, и пойнтер към таблица от (виртуални) функции, приложими към обекта. Ако човек си позволи малко фантазия, може да измисли много други интересни структури и техники, подобни на OOP технологията.
abe ste se pobarkam
Az oba4e vse pove4e se obarkvam.Tva koeto 4eta v momenta izcialo protivore4i na vaste tvardenia!
Moite znania sa na nivo daskalo i knigi nikva praktika za sega no:
C,pascal - ne e OO ezik.
C++ t.e. VC - e. (zatva e bil sazdaden)
znam 4e Struct(v C,C++) e kato Class(neznam dali go ima v C,C++) s malkata (koiato e mnogooo goliama) razlika 4e v CLASS mojesh da deklarirash
"private" promenlivi
Na4i znam malko C++ i mnogo mnogo malko C,Pascal.
Imali poniatia "inheritance" i "polymorphism"
v C/Pascal stoto ako niama na4i ne sa OO ezici.
Ne mi se smeite...sega se u4a OK! I sam kato pate v kal4ista!
10x
vvsiakakvi komentari po temata me interesuvat!
Moite znania sa na nivo daskalo i knigi nikva praktika za sega no:
C,pascal - ne e OO ezik.
C++ t.e. VC - e. (zatva e bil sazdaden)
znam 4e Struct(v C,C++) e kato Class(neznam dali go ima v C,C++) s malkata (koiato e mnogooo goliama) razlika 4e v CLASS mojesh da deklarirash
"private" promenlivi
Na4i znam malko C++ i mnogo mnogo malko C,Pascal.
Imali poniatia "inheritance" i "polymorphism"
v C/Pascal stoto ako niama na4i ne sa OO ezici.
Ne mi se smeite...sega se u4a OK! I sam kato pate v kal4ista!
10x
vvsiakakvi komentari po temata me interesuvat!
ПРОЧЕТИ ТОВА!.....
Всичко това което казваш го има, но не мисля че момента е подходящ да ти го пояснявам, защото може да него разбереш. Създай си система на учене, купи си няколко книги, ако вече не си ги купил, и ги почети, но не на набързо. Опитай се да схванеш принципите заложени в ООП, и след това сам ще си отговориш на въпросите които задваш. Ще видиш, че нещата са много прости. Няма значение какво ползваш VC, CBuilder, Delphi, JBuilde, VJ и т.н. в съвременните езици за прогамиране пинципите са еднакви, разликата идва от някои специфични черти на конкретния език и семантиката на самия език. Не ти ли прави впечатления на запад как наемат на работа, те наемат прогамисти които познават принципите и са добри в едно от нещата изброени горе.(това се дължи единствено на развитието на Езиците за програмиране, едно време нешата не седяха така). Също за да си добър програмис трябва да познаваш операционната систем върху която програмираш (това е необходимо, за да знаеш как работят нещата отвътре, Примерно за Windows: Нишки, Събития, Семафори, Критични Секции, Shell'a на Windwos, COM/OLE, Как се оправля паметта, Да знаеш основните групи API функции, Обектите на ядрото и т.н. има още много, но мисля че това е достатъчно за да се наречеш: "Аз съм на ниво" или "Аз съм добър програмис"). Разбираш ли какво се опитвам да кажа? Надявам се, че си разбрал, защото няма да го повторя.
Отг: abe ste se pobarkam--
Ще ти отговоря за понятията "inheritance" и "polymorphism". Те характеризират ОО, заедно с още един термин "капсулация". Искам да отбележа само логиката.
(i) Първо, какво означава термина "капсулация". Ами ако си мислим за някакъв обект, ние го характерезираме (в компютъра) с величини, записани в променливи. Логично е да съберем тези променливи в една структура(struct, record). Например обекта <човек> можем да характеризираме чрез величините “ръст”, “тегло”, “пол”, “ЕГН” (избираме конкретните величини от контекста на задачата). Това е напрактика капсулацията. Повече, тук влизат тези допълнителни ключови думи в езиците, като “public”, “protected”, “private”, но те са само за по-добра организация на софтуера: отделяме величините на обекта, достъпни до други програми (като public) и други, за ограничено използване само от ограничен брой програми (методи на обекта) чрез “private” и “protected”.
(ii) Термина “наследственост” (inheritance) означава следното. Ако имаме различни обекти, ние можем да ги класифицираме, подобно на класификацията на Дарвин. Например, човек е бозайник, а той е гръбначно, а то е животно (не растение) и т.н.т. Това точно означава, че всеки обект __унаследява__ своиства от по горен клас (вид) обекти, както човека унаследява свойствата на бозайниците.
Не е майтап.
Това ни позволява да постулираме обект, като “животно” от него да унаследим всички величини (променливи) и да получим “бозайници” или “влечуги” като само добавим към базовия обект, “животно” само допълнителните величини, характеризиращи “млекопитаещо” и други величини, хатрактеризиращи “влечуги”.
Какво ни дава това?- икономия! Всички програми които вече сме написали за “животно” важат както за “влечуги”, така и за “бозайник”; може да ги използваме; само добавяме разликите и новите неща.
Удобно нали?
На C++ го изразяваме това например, чрез
class Reptile : public Аnimal
{
. . .
}
и т.н.т. В англиската литература се използжа термина Derived (извлечен) клас. В нашия пример, класа влечуго(Reptile) е извлечен от класа животно(Animal).
(iii) Термина “полиморфизъм” означава следното. Всички обекти от даден клас (да речем класа “животни”) имат някакви общи своиства и операции (процедури). В нашия случай те могат да се движат, така, че някой може да напише команда (програма) “Move”. Отделно влечугите ще отговорят с “пълзене”, а бозайниците с “тичане”. В този пример командата “Move” е полиморфна, понеже ние можем да я даваме на всякакво животно, а то си знае как да я изпълни – с виртуалните процедури за пълзене или тичане.
Към това нещо идват термини в C++, като virtual, overloading, overreading.
Трябва освен синтаксиса на езика, да схванеш за какво се използват и какъв е смисъла на тези конструкции. Подобно е на Pascal, а може да пишеш ОО и на C – понеже ОО е логика, организация на програмата, стил, -- а след това идват езици като C++, SmallTalk, . . . които ни улесняват със синтаксиса си.
Трябва да разбираш тези нища, защото ако гледаш само синтаксиса, . . . няма да разбереш кое нещо за какво се използва.
Хайде стига, че стана много дълго.
/b3
(i) Първо, какво означава термина "капсулация". Ами ако си мислим за някакъв обект, ние го характерезираме (в компютъра) с величини, записани в променливи. Логично е да съберем тези променливи в една структура(struct, record). Например обекта <човек> можем да характеризираме чрез величините “ръст”, “тегло”, “пол”, “ЕГН” (избираме конкретните величини от контекста на задачата). Това е напрактика капсулацията. Повече, тук влизат тези допълнителни ключови думи в езиците, като “public”, “protected”, “private”, но те са само за по-добра организация на софтуера: отделяме величините на обекта, достъпни до други програми (като public) и други, за ограничено използване само от ограничен брой програми (методи на обекта) чрез “private” и “protected”.
(ii) Термина “наследственост” (inheritance) означава следното. Ако имаме различни обекти, ние можем да ги класифицираме, подобно на класификацията на Дарвин. Например, човек е бозайник, а той е гръбначно, а то е животно (не растение) и т.н.т. Това точно означава, че всеки обект __унаследява__ своиства от по горен клас (вид) обекти, както човека унаследява свойствата на бозайниците.
Не е майтап.
Това ни позволява да постулираме обект, като “животно” от него да унаследим всички величини (променливи) и да получим “бозайници” или “влечуги” като само добавим към базовия обект, “животно” само допълнителните величини, характеризиращи “млекопитаещо” и други величини, хатрактеризиращи “влечуги”.
Какво ни дава това?- икономия! Всички програми които вече сме написали за “животно” важат както за “влечуги”, така и за “бозайник”; може да ги използваме; само добавяме разликите и новите неща.
Удобно нали?
На C++ го изразяваме това например, чрез
class Reptile : public Аnimal
{
. . .
}
и т.н.т. В англиската литература се използжа термина Derived (извлечен) клас. В нашия пример, класа влечуго(Reptile) е извлечен от класа животно(Animal).
(iii) Термина “полиморфизъм” означава следното. Всички обекти от даден клас (да речем класа “животни”) имат някакви общи своиства и операции (процедури). В нашия случай те могат да се движат, така, че някой може да напише команда (програма) “Move”. Отделно влечугите ще отговорят с “пълзене”, а бозайниците с “тичане”. В този пример командата “Move” е полиморфна, понеже ние можем да я даваме на всякакво животно, а то си знае как да я изпълни – с виртуалните процедури за пълзене или тичане.
Към това нещо идват термини в C++, като virtual, overloading, overreading.
Трябва освен синтаксиса на езика, да схванеш за какво се използват и какъв е смисъла на тези конструкции. Подобно е на Pascal, а може да пишеш ОО и на C – понеже ОО е логика, организация на програмата, стил, -- а след това идват езици като C++, SmallTalk, . . . които ни улесняват със синтаксиса си.
Трябва да разбираш тези нища, защото ако гледаш само синтаксиса, . . . няма да разбереш кое нещо за какво се използва.
Хайде стига, че стана много дълго.
/b3
10x
Mercy i na dvamata :)
Tva e got 4e tuka ima i istinski programisti!
Az si misleh 4e C,Pascal ne sa OO.Vse oste ne sam
siguren 4e sa de. Ne mi kazahte sastestvuva li
nasledstvoto, polimorfiata i kapsulaciata v C ili
Paskal. Ako ne sastestvuva te ne moje da sa istinski OO ezici stoto tva 4e pravish obect ne pravi ezika OO. nali.
Ina4e po princip dosta dobre gi razbiram "terminite"
dori ste te popravia na edno miasto:"термини в C++, като virtual, overloading, overreading" poslednoto mislia 4e iskash da kajesh "overriding"
Mi tova e ..pojelaite mi uspeh ...
Mercy pak
p.s. (obiasneniata na "terminite" si gi kopirah i gi print-nah stoto sa dosta iasni iiz4isteni)
Tva e got 4e tuka ima i istinski programisti!
Az si misleh 4e C,Pascal ne sa OO.Vse oste ne sam
siguren 4e sa de. Ne mi kazahte sastestvuva li
nasledstvoto, polimorfiata i kapsulaciata v C ili
Paskal. Ako ne sastestvuva te ne moje da sa istinski OO ezici stoto tva 4e pravish obect ne pravi ezika OO. nali.
Ina4e po princip dosta dobre gi razbiram "terminite"
dori ste te popravia na edno miasto:"термини в C++, като virtual, overloading, overreading" poslednoto mislia 4e iskash da kajesh "overriding"
Mi tova e ..pojelaite mi uspeh ...
Mercy pak
p.s. (obiasneniata na "terminite" si gi kopirah i gi print-nah stoto sa dosta iasni iiz4isteni)
Отг: OOP
Отговарям ти накратко:
Обектно-ориентиран език трябва да има следните три характеристики:
1. Капсуловане
2. Наследственост
3. Полиморфизъм.
Паскал, както е замислен и публикуван от Никлаус Уирт не е обектно-ориентиран, то тогава такова понятие не е съществувало.
Редица конкретни реализации на Паскал са обектно-ориентирани, сред тях познатите ни продукти на Борланд : Турбо Паскал 6, 7, и техния наследник Делфи.
Стига ти толкова.
Обектно-ориентиран език трябва да има следните три характеристики:
1. Капсуловане
2. Наследственост
3. Полиморфизъм.
Паскал, както е замислен и публикуван от Никлаус Уирт не е обектно-ориентиран, то тогава такова понятие не е съществувало.
Редица конкретни реализации на Паскал са обектно-ориентирани, сред тях познатите ни продукти на Борланд : Турбо Паскал 6, 7, и техния наследник Делфи.
Стига ти толкова.
Отг: 10x
hmm. Ako naistina rabirash terminite to vuprosite sa ti na drugo nivo.
Dadoha ti otlichni obiasnenia kato za nachinaesht. Ako si takuv - nedei da sporish.
Inache vuprosa "Tova che v edin ezik ima Objects/Classes pravi li ezika OO ili ne?" naistina mozhe da se diskutira.
Primer PHP - dosta dobra Obekti kato se ima predvid ideologiata mu, noi avtorite preporuchvat da se izbiagvat
Nablegni mnogo na tova koeto ti napisa Shveik:
Opitai se da stanesh Programist. Ne se opitvai da nauchish konkreten ezik.
Dadoha ti otlichni obiasnenia kato za nachinaesht. Ako si takuv - nedei da sporish.
Inache vuprosa "Tova che v edin ezik ima Objects/Classes pravi li ezika OO ili ne?" naistina mozhe da se diskutira.
Primer PHP - dosta dobra Obekti kato se ima predvid ideologiata mu, noi avtorite preporuchvat da se izbiagvat
Nablegni mnogo na tova koeto ti napisa Shveik:
Opitai se da stanesh Programist. Ne se opitvai da nauchish konkreten ezik.
hehe
MFC е само за Visual C?
Какво разбираш под "Visual C"?
Щото тука част от колегите ползват Intel-ски c++ компилатор, а наскоро гледах примерчета с MFC, които се компилират... с борландския c++ компилатор :)))))
Какво разбираш под "Visual C"?
Щото тука част от колегите ползват Intel-ски c++ компилатор, а наскоро гледах примерчета с MFC, които се компилират... с борландския c++ компилатор :)))))
Отг: hehe
opredeleno MFC e misla za niama zna4enie kakav c++
kompilator!(ama Microsoft kvito sa pedali) Az izpolzvam VC i to e samo edno (na microsoft) a za Borland produktite niamam i
idea zatva i podhvanah temata.
kompilator!(ama Microsoft kvito sa pedali) Az izpolzvam VC i to e samo edno (na microsoft) a za Borland produktite niamam i
idea zatva i podhvanah temata.
Отг: mdam
Mdam....ne znam zashto wsickhi byrkat OOP s bokluci kato Visual C, Delphi i etc. Powecheto bokluci, koito sa tworili Microsoft prosto se otdalechawat ot istinata za OO stil. (naprimer realizaciqta na template s makrosi...naprawo e smeshno...)...Da ne goworim che cqlostno kato arhitektura i class hierarchy Windows-a e edna pylna boza po otnoshenie na OOP-to...Mnogo zhalko che tolkowa mnogo hora se razocharowat ot OOP samo zashtoto pyrwiqt im opit e s neshta kato VC, Delphi, CBuilder...Drug e wyprosa che pochti nikoj ot tezi Windows kompilatori ne e ANSI standarten...Towa koeto trqbwa da byde STL sa nqkakwi improwizacii na swobodna tema...(mozhe bi naj-dobyr e Free Commandline Tools na Borland...i poslednite wersii na GNU C++...te weche sa 1/1 sys ANSI standarta)... Ako naistina se interesuwate ot istinsko OO programirane, ne e neobhodimo izobshto da se dokoswate do bokluci kato Windows i Visual C...No za syzhalenie mnozinstwoto ot horata swyrzwat OOP s Windows i Microsoft. (wsyshnost proizhoda na OOP e ot ezicite za simulacii)
Отг: OOP
Delphi е наследник на Borland Pascal който е обектно ориентиран език следователно може.Но C++ е класика и да се предпочете Delphi е глупост.