Loading...
GoShow avatar GoShow 595 Точки

[Homework] OOP - Common Type System - Септември 2014

Мисля, че не видях отворена тема, ако греша, предполагам модераторите ще ме поправят. Ето ги и 2 от трите задачи от последното домашно:

Customer

String Disperser

TODO Custom Tree

Не съм сигурен дали ще имам време за последната. Отборни проекти...

https://github.com/GoShow/OOP/tree/master/C%23OOP/Common%20Type%20System/StringDisperser

Тагове:
8
C# OOP Basics 07/10/2014 14:24:51
ttitto avatar ttitto 1153 Точки

Втора задача ти е доста далеч от истината. Мисля че не си разбрал условието . Няма никакви първи, средни и други имена.

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

2
07/10/2014 20:52:21
GoShow avatar GoShow 595 Точки

Благодаря! Наистина не съм осмислил задачата, преправих я и сега мисля, че съм по-близо до истината, което не значи, че е 100% вярна.

0
ZvetanIG avatar ZvetanIG 907 Точки

Ето домашното ми за радост на моите абонати laughing.

1. Customer

2. String Disperser

3. Custom Tree - тази от TODO може да стане и ТУТУ... Първо ще трябва да се прочете за binary search tree и тогава ще преценя дали ще има време за нея.

P.S.  Попрочетох това - онова. Някои неща ми просветнаха за тези дървета, но други неща просто въобръжението ми не ги побира. Чувсвам се като индианците, които гледали  корабите на Колумб и не ги виждали.

14
08/10/2014 08:28:49
ivailozd avatar ivailozd 75 Точки

ZvetanIG , на първа задача клонирането трябва да е дълбоко, а ти създаваш само нов лист и в него записваш старите обекти.

Според мен трябва да е нещо такова:

List<Payment> clonedPayments = new List<Payment>();
foreach (var p in this.Payments)
{
    clonedPayments.Add(new Payment()
                          {
                              Name = p.Name,
                              Price = p.Price
                          });

}

По този начин освен листа и обектите в него са нови инстанции.

7
ZvetanIG avatar ZvetanIG 907 Точки
public object Clone()
{
var cloning = new Customer(this.FirstName, this.MidleName, this.LastName,
this.Id, this.PermanentAddress, this.Email, this.MobilePhone);
 
cloning.Payments = new List<Payment>(this.Payments);
cloning.CustomerType = this.CustomerType;
 
return cloning;
}

 

Това ми е метода за клониране. В него се случва следното

var cloning = new Customer(.......);  - това създава нов обект от клас Customer.

cloning.Payments = new List<Payment>(this.Payments); - това ми добавя нов лист към клонирания обект.

Факта, че използвам new  и в двата случая ми гарантира, че имам нова инстанция на обектите (на друго място в паметта).

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

0
08/10/2014 14:59:25
GoShow avatar GoShow 595 Точки

event Ceco! Доста хора са абонирани и си чакат! :)

3
externo avatar externo 119 Точки

1.Customer

2.String Disperser

3. май е раничко за нея, но е полезно да се мисли и запознае с проблема

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