Статус: Офлайн
Реєстрація: 10.07.2009
Повідом.: 508
Реєстрація: 10.07.2009
Повідом.: 508
75Oa6591MQ4
Это такой у тебя,милый голосочек.?
Перегляньте відео нижче, щоб дізнатися, як встановити наш сайт як веб-програму на головному екрані.
Замітка: This feature may not be available in some browsers.
75Oa6591MQ4
всплыл наконец-то
Бестыжий он такой,корчит из себя засраннца,никакому переобучению не подводится.
одним словом препод.
Херню какую то советовать и вообще с толку сбивать.Это что,работаешь на цейро что ли ?
Цитата:Сообщение от Supostat;
А перегруженные методы не подходят для этих целей?
Вроде нет, полиморфизма неполучиться.
Это как? Перегрузка методов вообще то и придумана для поддержки полиморфизма.
Приводить object к нужному типу хуже, т.к. начнёш получать runtime ошибки если чего-то неправильно написал. Используя перегруженные методы или универсальные методы (обобщения) ошибки будут compiletime.
Но в любом случае, вы неверно подошли к реализации. Не делайте так, вам уже написали.
А зачем городить такой огород с базовым классом и производными?
Класс "посылка", в ней все эти данные в виде свойств. В нём же и определить методы обработки свойств, если нужно - статические.
Тепрь можно сделать List<посылка> ... и чем это не подходит?
foreach (ReciveData d in structTelegram)
{
d.Parse(readBuff);
}
Это как? Перегрузка методов вообще то и придумана для поддержки полиморфизма.
Приводить object к нужному типу хуже, т.к. начнёш получать runtime ошибки если чего-то неправильно написал. Используя перегруженные методы или универсальные методы (обобщения) ошибки будут compiletime.
Но в любом случае, вы неверно подошли к реализации. Не делайте так, вам уже написали.
Так не получиться в цикле разобрать телеграмму, т.к. данные в телеграмме разные и разбирать их надо по разному. Я в классе ДАННЫЕ объявляю абстрактный метод Parse после этого в классах наследниках реализую по разному метод Parse. И теперь в цыкле могу разобрать телеграмму
Код:foreach (ReciveData d in structTelegram) { d.Parse(readBuff); }
при этом в контейнере structTelegram лежат наследника класса ReciveData и метод d.Parse(readBuff) работает по разному.
В этом собственно заключаеться полиморфизм в моей ситуации.
Если при приведении типов возникает указанная ошибка,что зависит от степени контроля компилятора по операциям с разными типами данных,следует дополнительно обьявить методы,совершающие данные операции с указанием приведенных типов без их реализации.Просто повторить обьявление.
Помогите решить следующий вопрос:
Мне бы хотелось в абстрактном базовом классе обьявить абстрактную функцию которая принимает один аргумент и возвращает void, но в производных классах этот аргумент предпологаеться различным.
public abstract class MyClass
{
public abstract MyMethod(ObjectHolder obj);
}
public class ReceiveData
{
public virtual void Parse(string data) { }
}
Я делаю базовый абстрактный класс ДАННЫЕ, производные классы ДАННЫЕИНТ, ДАННЫЕВРЕМЯ, ДАННЫЕДАБЛ и.т.д. Набераю в контейнер List<ДАННЫЕ> структуру телеграммы ДАННЫЕИНТ, ДАННЫЕВРЕМЯ, ДАННЫЕДАБЛ и потом работаю с этими данными по всему приложению.



я рекомендую соптимизировать все абстрактные и происзводные классы в один тип byte
Затем объявляешь List<byte> container, и можешь любую структуру телеграммы разбить на байты и сложить в container. А потом можешь работать с этими байтами по всему приложению... Круто?
Даже более того - байты можно будет сортировать и объявить контейнер статиком, чтобы из любой части приложения можно было поработать с накопленными байтами в любое время. Затем можно приделать выгрузку и загрузку байтов при закрытии/открытии приложения и байты будут накапливаться с каждым днем![]()

В том что Вас отчислили за академическую неуспеваемость преподаватели не виноваты. Виноваты Вы сами.
Если при приведении типов возникает указанная ошибка,что зависит от степени контроля компилятора по операциям с разными типами данных,следует дополнительно обьявить методы,совершающие данные операции с указанием приведенных типов без их реализации.Просто повторить обьявление.
я рекомендую соптимизировать все абстрактные и происзводные классы в один тип byte
Затем объявляешь List<byte> container, и можешь любую структуру телеграммы разбить на байты и сложить в container. А потом можешь работать с этими байтами по всему приложению... Круто?
Даже более того - байты можно будет сортировать и объявить контейнер статиком, чтобы из любой части приложения можно было поработать с накопленными байтами в любое время. Затем можно приделать выгрузку и загрузку байтов при закрытии/открытии приложения и байты будут накапливаться с каждым днем![]()

а для тройного ускорения при работе с container сделать наследника байта - tripleByte
А как потом с этим работать?Это всё понятно. Так а зачем тогда плодить классы-наследники? Сделай в базовом классе перегруженный метод Parse для каждого типа. Полиморфизм на лицо.
Вот именно! Т.е. дополнительная работа. Как альтернатива - предлагается изначально проектировать код так, чтобы компилятор ловил как можно больше. Считается что это хороший стиль написания кода (по крайней мере для C#)
Если уж совсем никак, то я бы посмотрел в сторону универсального метода.
ООП как технология проектирования используется в случае, если Вам необходимо создать уровень Бизнес Логики