Loading...
a_rusenov avatar a_rusenov 1103 Точки

[Homework] OOP - Multimedia Shop Lab

Здравейте,

Отворена е формата за качване на домашно за мултимедийния магазин до 8 февруари. Също така са качени 2 допълнителни задачи, които ги нямаше на лаба. Домашното важи за всеки, който иска да се поупражни да напише нещо по-цялостно.

Ако имате въпроси - дайте сигнал. :)

6
C# OOP Basics 04/02/2015 17:44:03
thepowerof4 avatar thepowerof4 98 Точки

За онлайн хората ще има ли някакво видео?

2
a_rusenov avatar a_rusenov 1103 Точки

Не, нищо не е решавано, за да има видео. Може на някоя от следващите лекции да се разгледат по-интересните неща.

0
Filkolev avatar Filkolev 4482 Точки

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

0
thepowerof4 avatar thepowerof4 98 Точки

Аха, ясно, благодаря! Онлайнерите да се чувстваме свободни да пишем и събмитваме също, нали?

0
a.angelov avatar a.angelov 1316 Точки

Да попитам информативно - за онлайн студентите това домашно задължително ли е за предаване?

/не че няма да ги реша задачите и без да е задължително, ама да знам да се включвам ли в срока за предаването му/

0
02/02/2015 21:50:53
mihayloff14 avatar mihayloff14 824 Точки

По принцип това е Lab, така че то си е незадължително и за присъствени и за онлайн студенти а който желае, може да вземе участие.

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

2
mihayloff14 avatar mihayloff14 824 Точки

Искам да попитам относно 5тата задача,

Make sure that the SaleManager operates with the notion of a sale, not a concrete type (through the interface ISale).

По принцип имаме само един клас който имплементира този интерфейс. Освен това, в листа от sale-ове ние трябва все пак да инстанцираме някакъв вид Sale. Не може да напишем .Add(new ISales(...)).

Да не би по-скоро да трябва да приемаме интерфейса IItem който ще добавяме към листа от Sales, за да може да работим с повече предмети или се бъркам?

0
RoYaL avatar RoYaL Trainer 6849 Точки

Въпросът е да е IList<ISale>. За да може впоследствие ако някой си направи MySale : ISale да си го добави в листа и пак да може да оперира с него :)

4
fricer avatar fricer 23 Точки

Здравейте колеги така като гледам никой все още не е споделил своя проект и реших да ви покажа моя laughing Много интересна задача лично на мен ми беше много приятно да напиша всичките класове, интерфейси и т.н. А и самите стъпки които помагат за написването на задачата бяха изключително добре направени. И така ето го и моят код приемам всякакви критики laughing Multimedia Shop

2
a.angelov avatar a.angelov 1316 Точки

Едно РЕШЕНИЕ и от мен.

Интересна задачака с добре указани стъпки, определено много полезна за придобиване на цялостен поглед върху нещата. Сигурен съм, че имам трески за дялане по кода, та ще съм благодарен за коментари и/или критика smile

3
04/02/2015 22:09:18
a.polyanska avatar a.polyanska 107 Точки

Здравейте,

И аз се боря със задачките и досега се натъкнах на две затруднителни неща, та ще помоля за помощ:

1. отделните айтеми в конструкторите могат да съдържат или сет жанрове, или стринг жанр. В дадената в условието схема, обаче клас Айтем няма отделно пропърти за стринга жанр. На мен по никакъв начин не ми хрумва как да се направи. Разбира се, хвърлих едно-две-три очи на постнатите тук решения и видях, че @ fricer го е направил така:

public Book(string id, string title, decimal price, string author, string genre)
: base(id, title, price, new List<string>() { genre })

лошо е, обаче, че пак не схващам. Моля, помогнете ми с логиката!

2. Понеже класът Айтем е абстрактен и ми трябва за да създам съответните конкретни айтеми, се опитвам да го напрая protected.При компилиране, обаче, получавам грешка "Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal". Класовете наследници са в същия неймспейс- дали там не е някъде уловката?

 

 

1
a.angelov avatar a.angelov 1316 Точки

1. Тук логиката е, че конструктура на конкретния item приема като параметър стринг genre, който подаваш на базовия конструктор като елемент на List<string> genres - т.е. създаваш си нов списък от жанрове с подадения жанр.

2. Абстрактния клас Item трябва да е публичен за да може да се наследи иначе няма как да се види от останалите класове, които биха искали да го наследят. Protected можеш да направиш член в абстрактния клас, който не искаш да се вижда от други класове освен наследниците.

1
a.polyanska avatar a.polyanska 107 Точки

@a.angelov

1. Да разбирам ли, че незавицимо, че в конструктора може да се подаде като стринг, то в аутпута ще излезе като лист и че това не противоречи на условието? Аз се опитвам при подаден инпут стринг да изкарам и изхода при отпечатване в същия тип като подадените данни.

2. По тази логика ми се струва, че ако направиш един клас protected, то той няма да е видим от никого, т.е. не можем да го направим такъв. Не разбиарм- нали протектед се вижда от наследниците? освен това опитах да направя публичен класа, а отделните пропъртита протектед, но ми дава същата грешка.

Нека да използвам, че си навътре с нещата и да попитам още нещо- опитвам се да задам статуса на rent чрез метод, както е по условие- ако е просрочен дедлайна- overdue и т.н. Поради това искам да задам прайвът сет на пропъртито, за да не може да се зададе отвън статус, различен от този, изчислен според датите на наемане и крайния срок за връщане. Тогава, обаче, ми казва, че трябва сет да е публичен, защото наследява интерфейса IRent. Правилно ли разбира, че ако се наследява интерфейс няма как да се ползва прайвът? И това не дава ли възможност програмата да дава некоректен резултат?

 

1
a.angelov avatar a.angelov 1316 Точки

1. Да. Аутпута ще го печаташ все едно имаш лист;

2. Ако абстрактния клас е протектед няма да се вижда от класовете, които искат да го наследят. При такива въпроси качвай целия код /целия проект/ за да може да го тествам/е :) Защото ми е трудно да преценя какво и защо се получава без да виждам кода.

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

0
Filkolev avatar Filkolev 4482 Точки

Виждам, че е отворена възможността да оценяваме домашни за лаба. На място казахте, че екипа на СофтУни ще ги проверява, последно как стоят нещата? 

Според мен предвид, че е незадължителен и доста по-малко хора са предали домашно, най-полезно ще ни е да получим обратна връзка от по-опитни хора, дори и да е след седмица или повече. Предполагам повечето колеги ще се съгласят, а и нали това е идеята на лаба, иначе с нищо не се различава от обикновено домашно; още повече, че по-сложните задачки останаха за домашна работа.

5
gpetr avatar gpetr 12 Точки

Ако това се проверява като обикновено домашно от колегите, какво му пречи на един онлайн студент да дава нарочно 0 точки на всички, за да не дръпнат присъствените  с 10% преднина пред него. Много хора си мислят, че са на състезание тук. При домашните става въпрос за 1% на домашно затова колегите не правят мръсни номера, но ако са 10% това е много примамващо за злодеите  (evil face)   wink

1
09/02/2015 02:13:48
a_rusenov avatar a_rusenov 1103 Точки

Не, този лаб ще е с peer-review оценяване. Следващият ще се оценява от екипа и ще има директен фийдбек. Междудругото, авторското решение е качено:

Относно точките към лаба - гледа се кой е присъствал (чекнал се е) и какво е предал (просто сега няма да има обратна връзка). Домашното си е като обикновено домашно.

0
Filkolev avatar Filkolev 4482 Точки

А проверката на лаба оказва ли някакво влияние? Защото не виждам кой ще се хване да проверява такова обемно задание, при положение, че за утре имаме две домашни, а до четвъртък още две. Силно подозирам, че никой няма да получи обратна връзка.

2
gpetr avatar gpetr 12 Точки

Искам да попитам относно това

Up to 10% bonus from labs (onsite students)

според лекцията лаба е 10% от оценката на изпита за присъствените студенти. Онлайн студентите не вземат бонус. В програмата има два лаба, приемам че всеки от тях е 5% или се взема по-добрата оценка от двата? Тези точки за присъствие ли се дават за тези, които са си пиунали чипа на рецепцията или за предаване като домашно? Има ли смисъл онлайн студентите също да го предават, ако няма да получат 10% бонус ? Ще получат ли поне обратна връзка да не са съвсем валат?

Благодаря за разяснението предварително. wink

0
09/02/2015 02:18:37
a_rusenov avatar a_rusenov 1103 Точки

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

Що се отнася до точки, онлайн студентите не получават нищо от лаба. От гледна точка на усвояване материала - лабът включва почти всичко взето и си е едно доста добро упражнение.

1
a.angelov avatar a.angelov 1316 Точки

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

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

0
gpetr avatar gpetr 12 Точки

angelov, прочети по-внимателно какво съм написал дума по дума и ще разбереш че никъде не казвам това да ми е мотивацията. Но е добре да знаем правилата на оценяване дори оценката да е по-маловажна от натрупаните умения. Теб щом хич не те интересуват оценки и сертификати защо ходиш на изпити?

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.