Смешивание ООП и процедурного программирования
От: serjjj Россия  
Дата: 25.02.14 06:39
Оценка:
Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?

QList<Aaa*> func1(const QList<Aaa*> &aaa);
double func1(const QList<Aaa*> &aaa);
и т.д.
Re: Смешивание ООП и процедурного программирования
От: LaptevVV Россия  
Дата: 25.02.14 06:57
Оценка: +1
Здравствуйте, serjjj, Вы писали:

S>Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?


S>
S>QList<Aaa*> func1(const QList<Aaa*> &aaa);
S>double func1(const QList<Aaa*> &aaa);
S>и т.д.
S>

Если ошибок нет, то кошерно...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Смешивание ООП и процедурного программирования
От: Baudolino  
Дата: 25.02.14 07:14
Оценка: 1 (1) +2 :)
S>Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?
На эту тему вообще не надо запариваться. Компилятор — как желудочный сок, расщепляет любую пищу в машинный код, поэтому какая разница, было это оливье в объектном стиле, спагетти в процедурном или суп-пюре в функциональном? Главное в этом деле — уметь готовить!
Re: Смешивание ООП и процедурного программирования
От: TarasB  
Дата: 25.02.14 12:34
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Смешивание ООП и процедурного программирования


Не понимаю, почему они противопоставлены.
Или вы про синтаксические отличия? Пфф, подумаешь, какой-то там синтаксис...
Вот в Аде вообще можно написать procedure Smth(in out A : MyClass) и эту процедуру можно вызывать и как
Smth(a) и как a.Smth.
Re: Смешивание ООП и процедурного программирования
От: __kot2  
Дата: 25.02.14 18:25
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?


S>
S>QList<Aaa*> func1(const QList<Aaa*> &aaa);
S>double func1(const QList<Aaa*> &aaa);
S>и т.д.
S>

я бы разве что голыми указателями бы не пользовался (в смысле смартпойнтеры бы использовал), а так не вижу ничего плохого. хотя, насколько помню, я обычно пишу шаблонный метод, чтобы не ограничиваться каким-то одним видом контейнеров, например QList
Re: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 27.02.14 11:50
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?


S>
S>QList<Aaa*> func1(const QList<Aaa*> &aaa);
S>double func1(const QList<Aaa*> &aaa);
S>и т.д.
S>


и при чем тут процедурное программирование?
In Zen We Trust
Re: Смешивание ООП и процедурного программирования
От: Аноним  
Дата: 03.03.14 15:02
Оценка: 1 (1)
Здравствуйте, serjjj, Вы писали:

S>Есть класс Aaa. Если мне нужно работать со списками этого класса, то насколько будет кошерно сделать самые обычные функции?


Некошерно. Правильно сделать класс, который представляет объект предметной области, а список сделать его свойством.

Причем список должен быть абстрактен, чтобы не нарушать инкапсуляцию.

S>
[c#]
public class Player
{
}

public class Team
{
    public IList<Player> Players { get; }
}
[/c#]
S>
Re[2]: Смешивание ООП и процедурного программирования
От: serjjj Россия  
Дата: 03.03.14 21:19
Оценка:
A>и при чем тут процедурное программирование?

Почему нет?
Re[3]: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 04.03.14 06:51
Оценка:
Здравствуйте, serjjj, Вы писали:

A>>и при чем тут процедурное программирование?


S>Почему нет?


это ты объясни что у тебя тут процедурного
In Zen We Trust
Re[4]: Смешивание ООП и процедурного программирования
От: Аноним  
Дата: 04.03.14 07:38
Оценка: -1
A>это ты объясни что у тебя тут процедурного

func1 является подпрограммой, но не является методом и нет гарантии отсутствия побочных эффектов.
Re[5]: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 04.03.14 07:52
Оценка:
Здравствуйте, Аноним, Вы писали:

A>>это ты объясни что у тебя тут процедурного


А>func1 является подпрограммой, но не является методом и нет гарантии отсутствия побочных эффектов.


ну и что? олсо в С++ нету "методов"
In Zen We Trust
Re[6]: Смешивание ООП и процедурного программирования
От: serjjj Россия  
Дата: 04.03.14 08:40
Оценка:
На что тогда это похоже?
Re[7]: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 04.03.14 08:58
Оценка:
Здравствуйте, serjjj, Вы писали:

S>На что тогда это похоже?


на обычный код.

вот например int main() { std::cout << "hello world\n"; } это ООП, ПП или ФП?
In Zen We Trust
Re[8]: Смешивание ООП и процедурного программирования
От: serjjj Россия  
Дата: 04.03.14 09:09
Оценка: -1
Если main не является методом, тогда ПП тут присутствует.
Re[7]: Смешивание ООП и процедурного программирования
От: TarasB  
Дата: 04.03.14 09:11
Оценка:
Здравствуйте, serjjj, Вы писали:

S>На что тогда это похоже?


на программный код
Re[9]: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 04.03.14 09:30
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Если main не является методом, тогда ПП тут присутствует.


круто. а если я в питоне напишу в файле
print("hello world")


или в плюсах
auto _ = (std::cout << "hello world\n");
int main() {}


это какое программирование?
In Zen We Trust
Re[10]: Смешивание ООП и процедурного программирования
От: serjjj Россия  
Дата: 04.03.14 11:42
Оценка:
A>это какое программирование?

Ладно, я сдаюсь. Какой правильный ответ?
Re[11]: Смешивание ООП и процедурного программирования
От: Abyx Россия  
Дата: 04.03.14 13:26
Оценка:
Здравствуйте, serjjj, Вы писали:

S>Ладно, я сдаюсь. Какой правильный ответ?


правильный ответ — по двум строчкам нельзя сказать ООП это или ПП.

олсо в С++ свободные функции могут быть частью интерфейса класса.
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.