Карта сайта

Это автоматически сохраненная страница от 15.12.2013. Оригинал был здесь: http://2ch.hk/b/res/58992684.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Вск 15 Дек 2013 09:27:06
отвлекись от еот-тредов
Сап, двач. Знаю, что здесь много кодеров, так вот я учусь программированию, пишу свою программу и наткнулся на камень, что статические методы не могут быть виртуальными, т.е. переопределенным в наследниках. Но мне как раз это и требуется. Пишу на C#, у меня есть некий базовый класс\интерфейс BaseClass с пустым методом DoWork, логика которого должна определяться только в наследниках. Фишка в том, что мне не нужны экземпляры этих наследников, только логика. Я хуево проектирую программу?


Вск 15 Дек 2013 09:30:35
А еще я очень хуево объясняю.
У меня будет группа классов, каждый из которых должен содержать определенный метод, логика понятно разнится от класс к классу. Логично что в этом случае мне нужен абстрактный класс или интерфейс. Вот только мне ни при каких случаях не потребуется создавать экземпляры этих классов, только обращаться к этим методам.

Вск 15 Дек 2013 09:32:48
Иди в /pr/
Алсо, ООП полезно в меру, а дикое надрачивание только во вред может идти.

Вск 15 Дек 2013 09:35:09
>>58992781
В /pr/ полтора анона, я там ответа буду ждать полгода и в итоге меня пошлют нахуй.
>Алсо, ООП полезно в меру, а дикое надрачивание только во вред может идти.
Не понял твоей мысли. Я думаю, что я неправильно проектирую программу, только не могу понять, как иначе можно сделать.

Вск 15 Дек 2013 09:37:35
>>58992823
Лучше расскажи что должна делать твоя программа. Так будет проще.

Вск 15 Дек 2013 09:40:10
>>58992684
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
MyTest.name = "dfgdfgfdg";
MyTest.Show();
}
}
class Test
{
static public int id = 0;
static public string name = "default";
static public void Show()
{
Console.WriteLine("Test.Show() " + name);
}
}
class MyTest : Test
{
static public void Show()
{
Console.WriteLine("MyTest.Show() " + name);
}
}
}

Вск 15 Дек 2013 09:40:11
http://social.msdn.microsoft.com/Forums/en-US/19a968ce-7d8b-4cf9-b0f0-292464f1e708/abstract-classes-and-static-methods?forum=csharplanguage
тут написано, почему. Скажи, как ты хочешь использовать свои классы. Тебе либо интерфейс и реализующие его классы нужны, либо плодить статик-классы.

Вск 15 Дек 2013 09:40:55
>>58992684
В чем сакральный смысл оверрайдить статические методы? Контекста же нет.

Вск 15 Дек 2013 09:47:02
>>58992823
ИДИ НАХУЙ ШАРПОДЕБИЛ

мимо-анон-из-пр

Вск 15 Дек 2013 09:47:41
>>58992873
>>58992947
>>58992930

Попробую пояснить на примере. Допустим, выводить на экран "this is class A\B\C".
Я пытаюсь сделать что-то вроде такого:
static class BaseClass // этот класс не имеет никакой логики
{
static void DoWork();
}
static class ClassA : BaseClass
{
static void DoWork() { print("test A") };
}

И таких статических производных классов я собирался делать с десяток, затем все их приводить к базовому и обращаться к методу, т.е. мне не нужно знать их тип. Вангую, что я что-то не то делаю.

Вск 15 Дек 2013 09:50:14
>>58992929
Как быть с тем, что можно создать экземпляр класса MyTest?

Вск 15 Дек 2013 09:50:27
>>58993118
Как ты их приводить собрался к базовому если у тебя буду статическими и без экземпляра

Вск 15 Дек 2013 09:50:37
Вы все - унылые пиздолисы, говнодрочеры, и просто поебота. Я вас всех ненавижу, потому что я - коля паршиков.

Вск 15 Дек 2013 09:51:19
>>58993175
О Господи, что я написал

Вск 15 Дек 2013 09:54:47
>>58993118
interface IWorker
{
void DoWork();
}
class WorkerA : IWorker
{
public void DoWork() { print("test A") }
}

В таких случаях обычно как-то так делают, и да, тогда придется создавать экземпляры. Deal with it.

Вск 15 Дек 2013 09:55:12
ООП переоценен. в большинстве случаев ебола с классами вовсе не нужна. разумеется речь идет о праграммах, которые потом будут юзать, а не кококо обучающее программирование в вузике

пишу-на-крестах-10-лет-кун

Вск 15 Дек 2013 09:56:12
>>58993268
>В таких случаях обычно как-то так делают, и да, тогда придется создавать экземпляры.
Вот это меня и смущает и не дает двигаться дальше. Это же нелогично!

Вск 15 Дек 2013 09:56:22
>>58992929
Это c#? Охуел от схожести синтаксиса с Java
УчуJava-кун

Вск 15 Дек 2013 09:56:57
>>58993275
php-примат не палится

Вск 15 Дек 2013 09:58:45
>>58993303
Синтаксис большинства языков очень сильно похож, друг на друга

Вск 15 Дек 2013 09:59:12
Сисечки для улучшения мозговой активности.

Вск 15 Дек 2013 09:59:44
>>58993303
И еще как бы microsoft почти все спиздил с жабы

Вск 15 Дек 2013 10:00:45
>>58993371
Наведи пример что тебе надо блять, нехуя не понятно
Чем тебя это не устраивает?
>>58992929

Вск 15 Дек 2013 10:01:36
>>58993402
Я же написал >>58993168


← К списку тредов