OOP предложение за курса


10
Здравейте колеги, чета от няколко дни презентацията за "Extension Methods, Lambda Expressions and LINQ" и честно казано почти нищо не вдявам. Лесните глупости от сорта на методи цикли и условни конструкции (които учат и в кидс академи) отминаха и ООП е една важна и фундаментална материя. Имам предложение срока за домашните да се изтегли с 1 седмица след лекцията за съответния материал и да ме покрепите ако мислите, че тук вече самообучението не е особено ефективно, няма голям смисъл да водим лекции за материал по който вече сме си предали домашните и се предполага че сме усвоили. Мислех си че разбирам от ООП, но Microsoft ме накараха да преосмисля позицията си. Общо взето са решили да използват доста нелогични конструкций в ООП, които не подлежат на логика, а само на наизустяване. Доста време отделих да чета и от книгата по C# и от презентацията, но така и не разбрах за кой дявол сами ми Lambda functions и Делегати, същото беше и с сетъри, гетъри и конструктори, които в JAVA например не се отличават от класически метод, в C# 3 дни загубих да разбера от къде се взе това VALUE, и какво правим ако искаме да имаме повече от 2 конструктора. Добра практика ли е в C# да се преизползва кода от другите конструктори или той отново остава скрит от програмистта?
Нека направим една дискусия и всеки си изложи мнението и аргументите. Основното е да има ли лекции преди всяка тема и домашното може ли да не е на следващия ден

в C# OOP от bgotov (1559 точки)


Отговори



5
И аз мисля, че малко са ни оставили по течението, което не много добре. Бих се радвал на малко повече внимание от страна на лекторите - 1 - 2 лекцийки няма да навредят на никой. За хората, които за първи път се сблъскват с концепциите на ООП-то (като мен), искам да кажа, че материята никак не е елементарна.
Не, че искам да мрънкам тука де - и без лекций ще се оправим както се оправяхме и до сега, но поне преди имахме workshop, който малко или много ни държеше в час.
ПП: Боби объркал си таговете нещо.

от nzhul (3415 точки)


0
за утре планираме лекция точно по тази тема. stay tuned!

от staafl (5770 точки)


4
Аз лично повече бих се зарадвал за още толкова задачи за домашно, желателно в незадължителен вид.
От лекции и четена на книги нищо няма да научим. Трейнъра излага нещата така, като той ги е разбрал и запомнил. Но дкоато човек не намери негов си собствен начин за запомняне на нещата колкото и лекции и книги да изчете, пак няма да е разбрал кой-знае колко.
ООП вече не е ... как да го кажа... не е синтаксис на даден език, а начин на мислене. Все едно да ходиш на лекции и да четеш книга как се рисува картина. Или как се кара колело. Или как се плува. Ами ... не става само с четене. Четенето и лекциите могат да ти покажат основните неща, но мисля че дори е вредно да се опитвате да копирате начина на ползване на дадените методи от трейнърите, Трябва да разберете какво ви дава дадения инструмент, и да знаете кога да го ползвате. Засега е достатъчно да се научим да ползваме свободно дадения метод за решаване на дадената задача. Никой не е казал че точно този метод е най-подходящия за решаването на тази задача, но ... това са просто примери. Разбирам трейнърите че им е огромен проблем да измислят задачи при които да се покаже начина на работа на дадения оператор като се съобразяват с ограничените ни досега познания. Просто трябва да трупаме знания които не разбираме съвсем за да можем да вземем следващата стъпка. По някое време когато се натрупа "критична маса" знания ще ни "просветне" какво са искали да ни обясняват преди месеци. Точно както е сега с out, ref и още много. Тези неща сме ги ползвали като маймуна микроскоп пред няколко месеца, но чак сега осъзнаваме точно какво прави дадената функция.
След няколко месеца ще схванем и ламбда функциите, и делегатите, и LINQ. Просто няма как да се орпавим без тях в базите данни, а без да знаем бази данни е много трудно да ни се обясни каква точно е ползата от LINQ и защо са го измислили.
В момента н амен ми е безкрайно тъмно за чий са ми всички тия интерфейси. Праволинейната ми логика ме натиска аз лично да си нося отговорността какви типове данни предавам към метода, аз да си обработвам изключенията и грешките в типовете, но подозирам че съм на много грешен път. Просто няма как да го осъзная, тъй като не познавам в детайли това което ми се "тика насила в ръцете" като инструмент.

от JulianG (5316 точки)


0
Много правилно колега.Не се притеснявайте ако не разбирате LINQ или ламбда изразите сега.Засега не са ви толкова важни в ООП курса(но в курса по бази данни ще ги благославяте).ООП е концепция и ви трябва да прочетете бая и още повече да пишете бая за да го разберете. Всеки може да направи по един абстрактен клас,базов клас,интерфейс или нормален клас но да го разберете как правилно да навържете всичко ви трябва малко опит.

от Sharkey (505 точки)


0
Добре, аз не виждам трудност в ООПто, но сте прави всеки разбира и учи по различен начин. ООПто всъщност е описание на реалния свят и се придържа по логика към него. Първия път като прочетох главите в книгата не ми стана много ясно, но логика имаше и я следвах. Сега до този етап на курса вече всичко ми е ясно. Относно Juliang за какво са ти интерфейсите. В книгата на наков се описва hardware-a, а софтуера го следва много стрикно като логика. Завършил съм Електроника и ми е доста ясно за hardware-a, доста от нещата, които учих за да мина просто ги приемах на доверие " това така работи" и чак в 2-3ти курс ми ставаше ясно, че и в 4ти. Тука става въпрос точно за такава абстракция, колкото по напред вървим толкова по ясно ще става картинката... А самия код е разделен вече точно на такива части. В книгата на Наков се дава като пример самия компютър - дъно, хард диск, рам памет, видео карта, мрежова карта и т.н. Като цяло ние не сме ги проектирали тия неща, нямаме идея как работят и от какво са направени, но знаем как да ги свържем (интерфейсно, кой кабел към кои модул отива) модул се използва в hardware-а. Тия неща като многолентови кабели и всички производни в компютъра дето свързват всеки модул за да направят едно цялостно устройство компютър (всъщност са ти интерфейси) а компютъра съответства на едно софтуерно приложение. Самата думичка интерфейс е връзката между две среди ( в повечето случай различни), та за да има връзка трябва да има изравняване на тия среди. В електрониката, в телекомуникациите интерфейса си има протоколи, които да преведат кода от битове и единици от единия модул към другия, за да се разберат и да работят заедно, при микроконтролерите и процесорите е изравняване на честотата на работа, която може да достига до G HZ.... Цялата тая логика се е приложила от инжинерите в софтуерния свят. Затваряш дадени класове код в един модул(примерно видео карта) правиш нов модул, но те не са свързани, затова правиш интерфейсите да ги свържиш и да работят заедно и т.н. докато накрая имаш едно устройство... Идвам аз гледам модулите, гледам интерфейсите ( аха това тука така и така работи ) не ме интересува какво има вътре, и няма да губя огромното време за да разбера, а директно ще го използвам. Както до сега сме използвали .Net платформата, тя стои по-същия начин на работата на програмисти от едно време. Това ни улеснява и може много по-бързо да работим и да се развиваме.

от Joro1881 (42 точки)


0
Първият път когато разбрах какво е интерфейс всъщност беше от Стар Трек. Там даден офицер беше на извънземен кораб и трябваше от неговия компютър да се свържи към този на извънземния кораб. Капитанът му нареди да се свържи, отговора беше "ще ми трябва известно време за да осъществя интерфейса, ще ми трябва помощ и от офицера по комуникации" в случая да му превежда от езика на извънземните. Не знам дали този пример помага... Но аз така уча, свързвам нещата, които разбирам от живота, от това което знам и което гледам и уча. Макарче завърших електроника много от наученото там като методика, започвам да го виждам в много други сфери.

от Joro1881 (42 точки)

0
да много хора го разбират като концепция, но домашните изискват кодване и то си има конкретен синтаксис, ако го изплякам с конвециите на Java ще работи, но дали ше ми се радвате? Има си добри практики, в книгата липсват връзката между (проблем) -> (клас, конструкция, методи), както и в презентациите.

от bgotov (1559 точки)


0
И според мен нещата трябва да се синхронизират. Нещата вече са си доста сериозни и изискват сериозно отношение в повечето случаи и презентацията непомага.
Лично аз съм се занимавал с програмиране отпреди и съм се докосвал до ООП чрез java и горе долу разбирам за какво иде реч и каква е идеята на всичко това. Но немога да кажа, че си пиша домашните от раз. До предните два курса сядах за един два дни и сътворявах домашно сега ми трябва ден за да навлезна в нещата и чак тогава да седна да си пиша домашното както трябва. Така че аз съм ЗА това упражненията/workshop-ите да бъдат в съгласувани с домашните.
П.С. да не пускам друга тема доколкото знам говорим за лекцията 08.10 но не виждам никакви качени материали от нея. Утре ще има ли пак лекция и от колко часът ще бъде? В календара нищо не пише и в писмото от преди седмица е упоменато само за тази от 08.10 без час и че може да се раздели на две.

от Vali0 (1139 точки)


0
Ето го видеото от лекцията на 08.10 http://www.youtube.com/watch?v=S9uboeNvEdw . Общо взето там е събран материала от първите 4 лекции, ако не броим Lambda и LINQ. Утре, пак ще има лекция, мисля, че ще е на тема Reflections, но не съм 100% сигурен. Лекцията ще си е от 18:00 както обикновено

от Hristo.B (3885 точки)

0
Reflections въобще не е в програмата.

от ttitto (1950 точки)



0
Аз съм твърдо ЗА! Даже е най-добре да удължат целия курс, защото следват HTML и CSS, тях и за по две седмици можем да ги научим. Защото сега се сблъскаме с фундаментална дисциплина, ако не я схванем навреме сме изтървали всички влакове. А както става ясно, доста колеги вече не могат да се справят. Аз съм започнал точно от 0-та, без никакви познания по ООП и ми е доста нагорнище в момента.

от martingeorgiev (2318 точки)


0
Аааа, недей така за HTML и CSS :) Ако смяташ че със знанията за 1-2 месеца ще можеш да направиш някакъв сайт който да прилича поне малко на нещо.... няма да стане. И там трябва усърдие, писане, писане и пак писане. Щото по тая логика ... и C# го зехме за 2 месеца, но ... това хич не ни прави дори и посредствени програмисти. Знаем само азбуката, но не и как да пишем поеми и романи.

от JulianG (5316 точки)

0
Казах го образно. Надявам се да не тръгнеш да ме убеждаваш, че HTML e с нивото на трудност на C# или ООП?

от martingeorgiev (2318 точки)


0
М/у другото, в момента пиша домашното за Common Type System. Отдавна не е имало задача със звездичка в домашните, сега има. Хващам се да я направя както трябва, дори ще се опитам да имплементирам балансиране на дървото. Знам че нямам и 1/2 от знанията които са ми нужни, но това което ще ми даде тази задача ще е от изключителна полза за много месеци напред. Досега сме чоплили само в List структурата която е нищо. Силно препоръчително е да наблегнете на дървета, стекове, опашки и т.н. - това са основни знания, които ще ви трябват точно колкото масивите ако решите да ставате читави програмисти.

от JulianG (5316 точки)


1
И според мен удължаването на времето за усвояване на курса ще ни позволи да научим по-добре фундаментите на ООП. Подкрепям и предложението изпита бъде преместен в края на Декември, преди Коледа.

от bankoff (3997 точки)


2

И аз като много колеги съм започнал горе-долу от нулата.
Първите 1-2 домашни ги направих сравнително бързо, защото материала беше повече от страна на синтаксис, как се пишат класове, интефейси и т.н.
При Lambda и LINQ, ми стана по-интересно, защото нещата вече станаха по-сложни и трябва повече да се мисли. Бих предложил да ни направят една лекция за LAmbda и LINQ, но след като мине срока за домашното, където не да ни покажат същия материал като лекцията, а да ни покажат нещо повече за използването им, тъй като в домашните се използваха едни и същи методи.

При OOP Fundamentals Part 1, 2 вече станаха доста сложни нещата и за първото домашно от част 1, ми трябваха 2-3 дни да го осмисля преди да успея да го напиша. Сега ще захващам второто домашно.

Според мен, ни трябва просто време, за да осмилим материала, и малко повече разнообразни домашни, за да се упражняваме.

Предполагам, че при отборната работа ще усетим истинската сила на ООП, защото сега пишем малки проектчета с по 5-6 класа, но при играта ще трябва да комбинираме доста повече знания и предполагам там ще дойде истинския зор.

П.П. Има ли вече идея, кога ще започне отборната работа ? 


от Hristo.B (3885 точки)


0
За какво ти е лекция за Labmda и LINQ - има го всичко в интренет, пълно е с видео уроци точно на тази тема. Там просто трябва да се научи синтаксиса, не виждам нищо сложно.

от plamen.yovchev (3283 точки)

0
Прав си, но в интернет е по-трудно да се отсеят правилните техники, и просто е различно някой да ти синтезира информацията на едно място :)

от Hristo.B (3885 точки)


4
Мен също ме затормозява ООП, иска повече четене докато се схване. C# 2 беше по-труден от гледна точка на това, че домашните бяха много и разнообразни. Самия материал по лекциите като концепция и обем не беше много. Нивото му на сложност за разбиране също.
Сега нещата са малко по-различни. Аз лично започнах C# от нулата (въобще програмирането). Беше ми трудно и непознатно, но свикнах и ги схванах нещата. Сега с ООП е по същия начин. Лека-полека с времето ще се избистря всичко. Преди няколко седмици не можех да боравя с класове. Сега с лекота ги създавам, нагласям методи, конструктори, полета, наследяване. Знам какво са делегати, event-и, лабда и LINQ изрази и т.н.
Наложи ми се да прочета доста повече допълнителна информация за ООП, отколкото ми се налагаше преди това. Но в академията го казват постоянно, че трябва и сами да се учим. Имаме доста материали във форума и изписани дискусии по домашните (а също и доста решения, които можем да погледнем)
Когато нещо ми е трудно и не знам как става просто поглеждам някъде. Разглеждам няколко варианта докато схвана логиката и тогава го пиша сам. Няма да открием топлата вода, няма нищо лошо в това да погледнеш решението на някой друг, за да разбереш как става.

от Vazzzz (1380 точки)


0
Лошо е да гледаш чуждото решение единствено ако не си се опитал да намериш "свое" преди това.

от Flystar (1171 точки)

0
Не става въпрос за копи-пейст, а гледане с цел учене. Дали ще видя решение на някой от форума или ще попадна на обяснен подобен пример на някой друг сайт, докато търся допълнителна информация, мисля, че няма много голяма разлика. Разбира се приоритетът е самостоятелното решаване на задачата, но когато просто не знаеш нещо няма как да го направиш.

от Vazzzz (1380 точки)



1
На мен не ми липсва време за домашни, за четене и за лекции. В момента съм приполовил CTS. Много по-бързо става всичко до тук в сравнение със С#2. Доколко написаното обаче е вярно и как може да се подобри - ето това ми липсва. Няма обратна връзка за свършеното. А доколкото разбирам повечето колеги са както и аз , нови в ООП и не може да се разчита на 100% на тяхното мнение. Миналогодишните колеги от есенната академия, бяха заети напоследък с последния си изпит, а след него като че ли спряха да посещават форума. И оттам помощта намаля.
Според мен ще е добре да може някой по-навътре в нещата да ни проверява домашните и да ни пише рецензии за тях. Поне всяко домашно по веднъж да се проверява от по-старши, а не само от зайци

от ttitto (1950 точки)


0
A Много точно казано, обратната връзка липсва и постфактум учим как е трябвало да направим нещата които вече сме предали

от bgotov (1559 точки)


0

Ето ви специална лекиця за LINQ: http://www.youtube.com/watch?v=iQQLWr0VbYo


от easlavov (4118 точки)