Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
СуперМодулятор
134 / 134 / 48
Регистрация: 03.11.2012
Сообщений: 974
1

Проблемы с ооп — какие у кого

27.01.2013, 23:28. Показов 4597. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Несколько дней — грубо говоря, неделю, учу C#. После процедурного программирования на паскале, честно говоря, пару дней чувствовал себя недоразвитым. Потом, видимо, что-то в мозгу переклинило, и я кое-что уразумел. Но я в курсе, что для полного понимания мозг придется еще изрядно покрошить.
А какие у Вас были проблемы при изучении парадигмы ООП и первого ООП ЯП'а?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2013, 23:28
Ответы с готовыми решениями:

Solo 6C у кого какие настройки? и звуковуха? (у кого они :)
Привет! Подскажите какие у кого значения стоят на басе и тембре на Solo 6C? И на какой звуковой...

Какие правила вывода будут между модальными кванторами, какие с ними возможны проблемы и вообще можно ли их использовать
Есть некоторая проблема, связанная с модализацией двух известных кванторов. Мне нужно понять,...

У кого какие оценки?
процесор 7,2(феном 2 х4 925) память 7,4(2х2гб 1333 ддр3) Видео 6,0(5770) Игри 6,0(5770) Хард...

У кого какие кактусы?
У кого какие кактусы

39
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
28.01.2013, 12:33 2
Izobara, проблемы возникают по ходу. Когда проект содержит около сотни классов и написана не одна тысяча строк кода. Вот тогда, когда чуток изменяется ТЗ, или когда появляется фича, или даже просто дело доходит до ключевой точки, которая если и была проработана на уровне идеи, то плохо, вот тогда, глядя на все труды, понимаешь, что ты нуб, что все твои "навыки ООП" гроша ломаного не стоят, то, что еще учиться и учиться.

ЗЫ. ну может немного и сгустил краски, но совсем чуть-чуть. Удачи
2
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
31.01.2013, 10:53 3
Цитата Сообщение от Izobara Посмотреть сообщение
А какие у Вас были проблемы при изучении парадигмы ООП и первого ООП ЯП'а?
Никаких, потому что начал с изучения ООП, а не ООП языка.
1
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
02.02.2013, 01:36 4
Обычно при переходе на ООП трудно понять что такое полиморфизм, многие (в основном студенты и не только) понимают что это, но своими словами доходчиво объяснить не могут. Лично я лучше всего понял что это такое на примере интерфейсов, а в частности шаблона стратегия.
1
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
02.02.2013, 15:01 5
Цитата Сообщение от MrHitman47 Посмотреть сообщение
Обычно при переходе на ООП трудно понять что такое полиморфизм, многие (в основном студенты и не только) понимают что это, но своими словами доходчиво объяснить не могут. Лично я лучше всего понял что это такое на примере интерфейсов, а в частности шаблона стратегия.
А, ну да. Особенно когда в C++ имеешь 3 типа полиморфизма, в Smalltalk их 4.
0
СуперМодулятор
134 / 134 / 48
Регистрация: 03.11.2012
Сообщений: 974
02.02.2013, 16:18  [ТС] 6
Не, я с# учу... Тут сколько-типов?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
02.02.2013, 16:26 7
Цитата Сообщение от Izobara Посмотреть сообщение
Не, я с# учу... Тут сколько-типов?
Почитай Буча "Объектно-ориентированный анализ и проектирование с примерами приложений"
1
СуперМодулятор
134 / 134 / 48
Регистрация: 03.11.2012
Сообщений: 974
02.02.2013, 16:38  [ТС] 8
Вчера начал читать на ночь. Правда, заснул после пары страниц.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,589
02.02.2013, 22:13 9
Цитата Сообщение от Izobara Посмотреть сообщение
Не, я с# учу... Тут сколько-типов?
Типы полиморфизма:
  • параметрический — через дженерики
  • включение (inclusion) — через наследование
  • перегрузка: динамическая — через переопределение методов в потомках, статическая — по типу аргументов метода
  • приведение типа (coercion) — не знаю, как с этим дела обстоят в C#
2
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.02.2013, 12:15 10
Цитата Сообщение от korvin_ Посмотреть сообщение
перегрузка: динамическая — через переопределение методов в потомках, статическая — по типу аргументов метода
С каких пор переопределение метода, является перегрузкой?
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,589
03.02.2013, 14:58 11
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
С каких пор переопределение метода, является перегрузкой?
А чем оно является? Специальный полиморфизм (для разных типов объектов выполняется разный код), с выбором реализации по типу «нулевого» аргумента — объекта.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.02.2013, 15:24 12
Цитата Сообщение от korvin_ Посмотреть сообщение
А чем оно является? Специальный полиморфизм (для разных типов объектов выполняется разный код), с выбором реализации по типу «нулевого» аргумента — объекта.
Переопределение != перегрузка.
Перегрузка это статический полиморфизм, а переопределение это динамический полиморфизм.
Пример перегрузки
C++ (Qt)
1
2
int strlen(const char* str);
int strlen(const std::string& str);
Пример переопределения
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
public:
  virtual void some_method()
  {
     std::cout<<"A::some_method";
  }
};
class B: public A
{
  public: 
  virtual void some_method()
  {
     std::cout<<"B::some_method";
  }
};
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,589
03.02.2013, 16:06 13
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Переопределение != перегрузка.
Перегрузка это статический полиморфизм, а переопределение это динамический полиморфизм.
Время выбора реализации — не существенная разница. Важен смысл: зависимость выполнения кода от типов аргументов.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.02.2013, 18:25 14
Цитата Сообщение от korvin_ Посмотреть сообщение
Важен смысл: зависимость выполнения кода от типов аргументов.
Цитата Сообщение от korvin_ Посмотреть сообщение
перегрузка: динамическая — через переопределение методов в потомках, статическая — по типу аргументов метода
Тогда причем тут переопределение?
Смысл в каждом случае разный. Не даром существует полиморфизм переопределения и полиморфизм-перегрузка
0
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
03.02.2013, 18:35 15
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Никаких, потому что начал с изучения ООП, а не ООП языка.
Это очень заметно, Ваша безаппеляционность (частенько переходящая в рядовое хамство) быстро проявляются на любом форуме Типа "я хорошо знаю принципы" - значит все что не согласуется с ними = ересь. А по жизни все куда сложнее, механически заученные правила мало что дают, а то и вредят. Я впервые увидел ООП в Turbo Pascal 5.5 и мне кажется я понял о чем речь. Да, это имеет большой смысл, но далеко не всем (включая меня) нравится жесткая, навязанная "классовость", как напр в жабе. ООП - это попытка систематизировать процедурное программирование. Удачная или нет - хз (другого не видно). Но если человек начинает сразу с выводов (не зная откуда ноги растут) - большой конфуз выходит
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
03.02.2013, 19:15 16
Поправьте, если я привёл неправильный пример.

С точки зрения мировосприятия большинства людей, полагаю, эти структуры покажутся эквивалентными с точностью до положения аргумента, через который передаётся sign.
Java
1
2
3
4
5
6
7
8
class A {
  int sign = -1;
  public int m() { return this.sign * 1; }
}
class B extends A {
  /* override */
  public int m() { return this.sign * 2; }
}
Java
1
2
3
4
5
6
7
8
class A {
  int sign = -1;
  public static int m(A obj) { return obj.sign * 1; }
}
class B extends A {
  /* overload */
  public static int m(B obj) { return obj.sign * 2; }
}
0
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
03.02.2013, 19:30 17
2Mysterious Light Не лезьте в "лабуду", эти "тонкости синтаксиса" ничего не решают и никак не оцениваются, всегда найдется тонна мальчиков-зайчиков знающих модные детали лучше
0
Taatshi
03.02.2013, 19:47
  #18
 Комментарий модератора 
Прекращаем оффтоп.
0
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
03.02.2013, 19:55 19
Цитата Сообщение от Taatshi Посмотреть сообщение
Прекращаем оффтоп.
Как скажешь, начальница
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
03.02.2013, 20:04 20
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Поправьте, если я привёл неправильный пример.
пример неправильный
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class A
{
   public static void m(A a)
   {
      System.out.println("A");
   }
}
 
class B extends A
{
   public static void m(B a)
   {
      System.out.println("B");
   }
}
 
class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
     A a = new B();
     B.m(a);
     B b = new B();
     B.m(b);
  }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class A
{
   public void m()
   {
      System.out.println("A");
   }
}
 
class B extends A
{
   public void m()
   {
      System.out.println("B");
   }
}
 
class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
     A a = new B();
     a.m();
     B b = new B();
     b.m();
  }
}
есть динамический полиморфизм и есть статический и это не одно и тоже как уже указали выше
0
03.02.2013, 20:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2013, 20:04
Помогаю со студенческими работами здесь

У кого какие показатели
Ребят, у кого какие показатели в Данных о поисковых запросах, связанных с сайтом? Доля показов...

У кого какие творения?
Вот кто сейчас хорошо разбирается в C++, кто что написал такого фенаменального?

У кого проблемы?
Вот не пойму - это у меня проблемы или у Гугла?.. Захожу на google.com - проблема при загрузке...

У кого какие прошивки на USBASP?
есть ли какая либо модифицированная прошивка чтобы работало в студии и не ругалось при этом на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru