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 точки)


3
Според мен трябва да се дават повече задачи за домашно. Конкретно свързани с ООП.
Искам да поясня, че съм от Академията(които сега завършихме) от миналия сезон и сега съм се записал отново онлайн, за да подобря резултатите си от изпита, както и да науча още по-добре ООП-то.
Последната лекция, която я води Васил Динински е супер полезна, гледайте я.
А що се отнася до автора на темата, LINQ и Lambda се използват постоянно при работа с бази данни и Entity Framework. Ще го оцениш, когато и ако стигнеш до последните 3 месеца, когато обучението става целодневно. Последните 3 месеца всеки ден съм използвал LINQ.

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


0
Съгласен съм за домашните. Може би трябва повече упражнения върху материала.

от Vazzzz (1380 точки)


3
Аз пък мисля че има достатъчно материали, друг е върпоса дали знаеш как да ги научиш или не, специално за курса ООП имаме по 3 лекции от 3 различни лектори за всяка тема... аз лично слушам лекциите на Ники, когато не разбера нещо достатъчно пускам лекцията на Наков или Жоро, или пък и двете и накрая хоп изненада, предлагат ти на моменти 3 различни подхода които като ги обединиш и нещата стават кристално ясни

от Yordan.Bonev (780 точки)


0
Тук съм абсолютно съгласен , до сега никога не ми се е налагало да гледам лекция по 2 пъти , но на ООП ги гледам по няколко пъти и на различните лектори и нещата се навързват , а и тази лекция която е водиха на 8-ми наистина много спомогна за разбирането на нещата .

от TeodorTunev (3061 точки)


0
За LINQ и lambda изразите не се притеснявайте, ако не ги разберете от сега. На вас още реално не ви трябват толкова и още не може да разберете реалната полза от тях. Когато стигнете до Бази данни, Уеб Сървиси и т.н. просто няма да може да живеете без тях. Така, че ще имате още дооооста време да ги упражнявате.

от Teodor92 (13062 точки)


0
в Linq няма нищо сложно - просто импортваш Select-и в C#. Само, че така и не можах да разбера как да върна резултата като резултат от функцията. Напр. public static ??? SortByNameLinq(Students[] allStudents) { var query = from student in allStudents orderby student.FName, student.LName //descending select new { student.FName, student.LName };
return query; }

от bgatev (1491 точки)

0
https://gist.github.com/Teodor92/6980790

от Teodor92 (13062 точки)



0

Здрвейте,

аз лично не разбрах много много темата на този въпрос, предполагам че   колегата bgotov се е занимвал с Java и сега му е малко неясно. Лекцията пък за Ламба изразите, мене ме върна към предишните курсове, където вкарвахме повече математическа логика при решаването на домашните.

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

Друго, аз не виждам смисъл от лекции, като тези, който имаме на видео. Ще се получи един монолог на лекторите, повтарящ се с годините отново и отново. По добре е да се измислят ефективни упражнения с цел практика и утвърждаване на знанията от видеата.

Поздрави!


от wooden_jesus (2128 точки)


0
въпроса е да имаме ли лекция преди домашното или лекцията да е след домашното. Защото сега лекцията е вторник от 18 до 22, а домашното трябва да го предадеш до 24.00

от bgotov (1559 точки)

0
И на миналата и днес нямаш как да отида поради липса на време. Но както виждам миналия вторник се е говорело за ООП, фундаментални принципи 1, домашното за което е чак другия вторик. Поправи ме ако съм в грешка.

от wooden_jesus (2128 точки)



0
Здравейте,
на мен лично много ми хареса лекцията на Васил Динински. В нея ни показа как принципите на ООП се прилагат на практика. За мен беше доста полезна и бих се радвала ако има още такива лекции.
Поздрави!

от pepakam (426 точки)


3
OOP не е кой знае колко трудно, просто ви трябва малко време за осмисляне, такаче спокойно несе напрягайте, предполагам че до изпита всеки който е учил ще го схване.

от RamiAmaire (1868 точки)


3

Силно препоръчвам за още по-добро усвояване на материала: 

http://pluralsight.com/training/Courses/TableOfContents/csharp-interfaces


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


0
Здравей, мога ли да се регистрирам без да плащам и без други глупости? Благодаря.

от martin.nikolov (4535 точки)


13

Не разбирам смисъла на тази тема. Не сме ви оставили по течението!

До края на курса всеки вторник сме организирали бонус лекции:

08.10.2013 г. - Принципи в OOP - Васил Динински

15.10.2013 г. - LINQ - Велко Николов

22.10.2013 г. - Design Patterns (Part 1) - Васил Динински и Антони Жеков

29.10.2013 г. - Design Patterns (Part 2) - Васил Динински и Антони Жеков

05.11.2013 г. - Reflection - Ивайло Кенов

12.11.2013 г. - Практическа работилница (Игра) - ???

19.11.2013 г. - Подготовка за изпит - Ивайло Кенов

26.11.2013 г. - Подготовка за изпит - Ивайло Кенов

Тези лекции са абсолютен бонус и не са свързани по никакъв начин с домашните. За тях имате качени материали и срокове от Day 1, тоест всеки трябва да си разпределя времето както намери за добре според своите нужди. Една седмица за 4 задачки (една тема) според мен е напълно достатъчно. 

Въпроси можете да задавате постоянно всеки вторник след лекциите, независимо от коя тема са - питайте, ако решите дори и за структури от данни и алгоритми. Не чакайте да дойде време за темата, че да се упражнявате.

Друг е въпроса, че идват присъствено по 20-30 човека, което е по-малко от 20% посещаемост. Това ме кара да се замисля - заслужава ли си човешкия ресурс от 4 часа, след като такова видео по тази тема вече е записано и лекцията се е получила добре.

В началото на ООP курса и аз гледах като индианец и се чудих кое, какво и как става. След 1 месец решаване на задачки, голяма част от материята се избистря.

Като цяло в момента ще научите какво представляват OOP синтаксисите в C# - когато започнете да пишете по-големи проекти напред в академията, ще разберете за какво са Interface и абстракции, защо е Lambda фунцкия и т.н. За сега е хубаво да знаете, че ги има и вярвайте ми - полезни са.

А конкретно на някои от въпросите:

- Добра практика е да се преизползват другите конструктори. Даже е препоръчително. Принцип DRY - Don't repeat yourself! Щом ти се налага да напишеш нещо два пъти - пиши го един път и го преизползвай.

- Не всичко е методи, за да може да има ясно разделяне на функционалността на всеки клас. Тук са му методите, тук са му полетата, тук пропертитата, тук конструкторите. Когато напишеш един клас, след 2 месеца някой друг го отвори да преработва - веднага вижда кое къде е и за какво служи, а не да се чуди кой метод каква му е работата.

- Това, че три дни си се чудил за value - това е естествен път в работата на софтуерния инженер - да се чудиш, да търсиш, да ровичкаш. Аз като почнах работа - дават ми да пиша ASP.NET MVC, което лежи върху Бази Данни, Entity Framework и още купища чудати думички, които нямах представа какво са. Сядам и търся, и питам, и ровичкам, и уча. Сега вече имам представа. :) Ако утре Microsoft фалират и повече няма C#, а само Java - гладни ли ще стоим, или ще го научим? :D

- За какво ти Lambda - имаш колекция от 10000 студента с много пропертита. Трябват ти 10-та най-добри по оценки от курса по OOP. Интересуват те само първо име и фамилия, друго не. Ще пишеш ли for цикли или ще направиш следното:

List<string> students = studentsCollection

.Where(st => st.CourseName == "OOP")

.OrderByDescending(st => st.ExamPoints)

.Take(10)

.Select(st => st.FirstName + st.LastName)

.ToList();

Приеми, че st идва от student и е съкратено, за да не пишем много код. Сега ако си го прочетеш на ум, звучи логично и се чете лесно, дори и да не си го писал ти. Ето както се случва:

1. Вземи цялата колекция (studentsCollection),

2. Където (Where) студента (st) е записан в курса, чието име(st.CourseName) е равно на "OOP",

3. Сортирай (OrderBy) студентите (st) в обратен ред (Descending) по точките от изпита (st.ExamPoints),

4. Вземи (Take) само първите 10, другите не ме интересуват,

5. Избери (Select) от студента (st) само първото име (st.FirstName) и фамилията (st.LastName) и ги конкатенирай (събери),

6. От тези стронгове направи лист (ToList)

7. Запиши листа в променливата students.

Лесно и четимо.

- Това, че научавате в последствие как се прави, а вече сте написали и пратили кода -> Welcome to programmer's world! Затова има цели книги за refactoring като концепция. За година и малко не сте става мега добър професионалист - просто се поставят основите, които да изградят бъдещето напред, където детайлите ще се избистрят малко по малко.

Поздрави,

Ивайло


от ivaylo.kenov (30760 точки)


0
Ивайло смилълът е, че досега се покриваше темата на лекцията с темата на домашните, но идваха малко късно, ще е хубаво между лекция и краен срок за домашно да имаме поне 2 дена. От лекцията научавам за 3 часа неща за които иначе ми трябват 3 дни минимум ровене в нета и гледане на стари видеа. Та идеята беше ако можем да дръпнем с една извънредна лекция със седмица напред лекциите, но сега виждам от програмата, че от тук нататък се разминават темите на домашни и лекции.

от bgotov (1559 точки)

0
Лекциите за домашните са качени отдавна, тези са бонус и не са обвързани по никакъв начин с тях.

от ivaylo.kenov (30760 точки)



1
Практическата работилница на 12.10 тази практическа работилница, от която ще трябва да изпратим практическо домашно ли е или ще имаме и още една такава?

от kalbo_17 (2709 точки)


0
И да допълня с въпрос: Какво трябва да предадем за тази практическа работилница: само проекта AcademyPopcorn ли? Гледам там има и JustBelot. По него трябва ли да правим нещо?

от ttitto (1950 точки)

0
Аз доколкото бях разбрала, ще ни дадат на място задача (игра), ще сме по отбори и ще имаме определено време да допълним кода, който ще ни бъде даден, но нека и някой по-запознат да каже...

от kalbo_17 (2709 точки)



0
Здравейте,
Утре(12.11) лекция ще има ли, има ли промяна в плановете?
Поздрави!

от pepakam (426 точки)


0
Ще има лекция за Academy Popcorn, няма промяна в плановете.

от ivaylo.kenov (30760 точки)

0
Добре, благодаря!

от pepakam (426 точки)