Компактна обработка на повеќе предмети со исти својства - Други проблеми -
Ете го 6-ти Одговори во оваа тема. Последната објава (13.07.2013 година, 14:11 часот) е од моцед.

моцеда
Регистрирано: 7 јули 2013 година
Би сакал да развијам мала програма, која во основа се однесува како што следува:
Да речеме дека имам банана, диња, јаболко и јагода.
Сите имаат исти, но специфични карактеристики: тежина, содржина на шеќер и калории.
Сега сакам автоматски да ја пресметам вкупната тежина, вкупната содржина на шеќер и вкупните калории ако имам 5 банани, 3 диња и 2 јаболка. Бројот на овошје зависи од влезот на корисникот.
Прво некаде треба да ги дефинирам својствата. Во C ++, јас главно го давав ова како едноставна функција во дополнителна датотека, каде што беа направени само такви дефиниции. Ова го направи вистинскиот изворен код јасен и полесен за одржување.
Како можам да го имплементирам ова во VB? Мислам дека решението е прилично едноставно, но мислам дека сум малку на цевка, особено што во мојот практичен пример имам околу 30 „овошја“, секое со по 10 идентични, но специфични својства.
Ви благодарам однапред “
RodFromGermany
Регистрирано: 30 септември 2010 година
Изворен код на VB.NET
- За секое овошје во myObstList
- 'направи нешто со овошје
- Следно
моцеда
Регистрирано: 7 јули 2013 година
Ви благодариме за одговорот и за правилниот вокабулар!
Повторно за да повторам дали правилно ја разбрав твојата изјава:
Се качувам во менито "Додај класа на проект." и креирајте нова (основна) класа наречена „Frucht.vb“.
Таму ги создавам општите својства:
Изворен код на VB.NET
- Јавна класа основна класа_ овошје
- Затемнета тежина како цел број
- Слаба содржина на шеќер како цел број
- Затемнети калории како цел број
- Крај на часот
Во нов час(?) во досие за дополнителна класа(?) Сега ги давам плодовите со вашите специфични атрибути:
Изворен код на VB.NET
- Јавна класа abglKlasse_apfel
- Затемнета тежина како цел број = 50
- Слаба содржина на шеќер како цел број = 100
- Затемнети калории како цел број = 200
- Крај на часот
Правилно?
Како тоа се подразбира под измама? Колку што знам, тој претставува отчукана листа на предмети (= мои луѓе?!) До коишто можам да пристапувам преку индекс.
Сè уште не разбирам како можам да кажам дека мојата програма обработува и 3х тежина од јагодата (како и сите други атрибути) и 4 пати поголема тежина, вклучувајќи ги и сите други атрибути на дињата со 3 јагоди и 4 дињи.
Мислам дека имам проблем со разбирање тука. Јас сум збунет.: wacko: wacko: wacko:
Овој пост е веќе изменет 1 пат, последен пат од „моцеде“ (13.07.2013 година, 12:29 часот)
Нели, прво ви треба основна паралелка. Оваа класа ги содржи сите својства што ги споделуваат сите плодови.
Изворен код на VB.NET
- Овошје од јавна класа MustInheit
- Јавната тежина како цел број
- Јавна содржина на шеќер како цел број
- Јавни калории како цел број
- Крај на часот
За секое одделно овошје, тогаш создавате посебна класа што ќе ги наследи својствата и методите на класата на овошје. Новиот метод се нарекува кога објектот е креиран. Во методот потоа ги поставуваме соодветните вредности за овошјето.
Изворен код на VB.NET
- Јаболко од јавна класа
- Наследува овошје
- Јавна под-нова ()
- Тежина = 50
- Шеќер = 100
- Калории = 120
- Крај на под
- Крај на часот
Ајде сега да направиме список со сите плодови и да одиме низ списокот.
Изворен код на VB.NET
- 'Создадете список од типот "Овошје"
- Dim FruchtListe како нова листа (на Фрухт)
- 'Додади јаболко на списокот
- FruchtListe. Додади (ново јаболко)
- 'Оди преку списокот
- За секое тековно овошје како овошје во овошната листа
- Порака. Покажи („Овошјето има„ & Тековно овошје.калории и „калории“)
- Следно
nafets3646
Reg ([Ee] x) Корисни гласови 276 придонеси 2.654 корисни гласови 276 Пол Машки програмски јазици користени VB.NET, C # Поранешни кориснички имиња nafets3646
Изворен код на VB.NET
- Образец 1 од јавна класа
- Прирачник за копче1_Клик (испраќачот како објект, и како агли на настанот) се справува со копчето 1. кликнете
- Затемни го мојот фрижидер како нов список (на Фрухт) 'Вашиот фрижидер
- MyCridge. Додај (ново јаболко) 'Едно јаболко се додава во фрижидерот
- МејнКриџ. Додади (нова банана) "И банана исто така
- „Сега треба да додадете манго, но бидејќи обично не го купувате, немате класа за тоа.
- 'Па, да создадеме овошје со датумите за манго
- MyCridge. Додади (Нов Фрухт со)
- За секој FruchtImCrid како Frucht In MeinCridge 'Сега одиме низ секое овошје во фрижидерот и ги издаваме неговите податоци
- MessageBox.Show (Стринг. Формат ("Опис:; Тежина:; Содржина на шеќер:; Калории:", _
- Овошје во фрижидер. Опис, _
- Овошје во фрижидер. Тежина, _
- Овошје во фрижидер. Содржина на шеќер, _
- Овошје во фрижидер. Калории))
- Следно
- Крај на под
- Крај на часот
- Овошје од јавна класа
- Ознака на јавниот имот како стринг
- Тежината на јавниот имот е двојно поголема
- Содржината на шеќер за јавна сопственост како цел број
- Калории за јавна сопственост како цел број
- Крај на часот
- Јаболко од јавна класа
- Наследува овошје
- Јавна под-нова ()
- Јас. Опис = "Јаболко"
- Јас .тежина = 50
- Јас.Содржина на шеќер = 100
- Јас.калории = 200
- Крај на под
- Крај на часот
- Јавна класа банана
- Наследува овошје
- Јавна под-нова ()
- Јас. Опис = "Банана"
- Јас .тежина = 100
- Јас.Содржина на шеќер = 200
- Јас.калории = 400
- Крај на под
- Крај на часот
FreakJNS
Исто како и во пост # 5, и јас би го сторил тоа. Сепак, неколку точки што исто така би ги вклучил:
Нема овошје како вистински предмет, можете да јадете јаболко или банана, но не и 'чисто' овошје - овошјето е само генерички термин за вистински предмети, но не и вистински објект. За програмирање, ова значи дека не можете да создадете објект од типот овошје, може да се создадат само вистински плодови. Класата на овошје е апстрактна и мора да биде обележана со MustInherhit.
Конструктор (=> Јавно подновно ново (.)) во класата на овошје исто така би имало смисла. Тежината, содржината на шеќер, калориите, ознаката и сл. Потоа мора да се пренесат таму како параметри. Од конструкторот на бетонските класи на овошје, тогаш можете удобно да го повикате конструкторот од горната класа. Мислам дека ова е особено важно кога одредени вредности Треба да бидат поставени во горната класа - без конструктор брзо заборавате на една.
Содржината на шеќер, калории итн. Сигурно се само навестување, може да има многу повеќе. Можеби е корисно да се вклучи дополнителна класа само за хранливи вредности. Во овој момент можете да размислите за тоа наместо да користите список на хранливи вредности наместо класа со фиксни хранливи вредности. Тоа би имало предност што секогаш ги додавате хранливите вредности што се навистина потребни. Во конструкторот на класата јаболко може да изгледа вака: Јас. Вредности на исхраната. Додај (нова хранлива вредност („Шеќер“, 42,7, единици.Грамови)).
Играта сега исто така може да се продолжи. Лебот, на пример, исто така има име и хранливи вредности - но не е овошје. Но, и двете се јадат. Апстрактната класа за јадење може да послужи како висока класа за овошје, печива и сл. Каде ќе ја повлечете линијата зависи од вашата апликација. Ако ве интересираат само овошје, нема смисла да се создаваат хиерархии на наследство толку долго (=> збунувачки)