Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 5 / 6
Регистрация: 20.05.2012
Сообщений: 32
1

Композиция

05.05.2013, 22:00. Показов 2307. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Допустим у меня есть класс точка, и отрезок, который строится с помощью двух точек.
Так вот, я создаю два отрезка:

C#
1
2
3
4
5
6
P1 = new Point(X,Y);
P2 = new Point(X,Y);
P3 = new Point(X,Y);
 
L1 = new Line(P1,P2);
L2 = new Line(P2,P3);
Проблема в том, что если я изменяю положение первого отрезка, то изменяется и положение второго отрезка, т.к. P2 у них общая. В С++, как я понимаю, создаются копии объектов, а в C# передаются ссылки? Можно ли как-то избежать такой вот ситуации?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 22:00
Ответы с готовыми решениями:

Наследование и Композиция
Много раз слышал о том, что Композиция почти всегда лучше Наследования. Так вот у меня такой вопрос...

Что есть Композиция??
Что такое композиция? Преподаватель сказал, что использование наследования в моей курсовой...

Композиция, агрегация и абстракция
Всем привет! Можете на примерах объяснить, что собой представляют композиция, агрегация и...

Композиция отношений (дискретная математика)
R1 ⚪ R2 если бы R1 и R2 были множествами, то всё ясень. как поступать, если они являются...

5
71 / 71 / 23
Регистрация: 22.05.2011
Сообщений: 528
05.05.2013, 23:48 2
C#
1
2
3
4
5
6
P1 = new Point(X,Y);
P2 = new Point(X,Y);
P3 = new Point(X,Y);
 
L1 = new Line(new Point(P1.X,P1.Y),new Point(P2.X, P2.Y));
L2 = new Line(new Point(P2.X, P2.Y),new Point(P3.X,P3.Y));
1
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 23:54 3
Rinat93, в С++ то же самое, если вы создаете классы. Если вы создадите структуру, то как и в С++ значение будет копироваться => такого эффекта не будет.
1
9 / 9 / 8
Регистрация: 22.04.2013
Сообщений: 52
06.05.2013, 00:09 4
можно попробовать передавать с атрибутом val
C#
1
2
3
4
5
6
P1 = new Point(X,Y);
P2 = new Point(X,Y);
P3 = new Point(X,Y);
 
L1 = new Line(val P1,val P2);
L2 = new Line(val P2,val P3);
что должно заставить конструктор создать еще один объект точки.
могу ошибаться.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.05.2013, 00:19 5
Лучший ответ Сообщение было отмечено как решение

Решение

Barii, я уж удивился, когда в шарпе такой атрибут ввести успели
3
9 / 9 / 8
Регистрация: 22.04.2013
Сообщений: 52
06.05.2013, 14:06 6
Цитата Сообщение от Psilon Посмотреть сообщение
Barii, я уж удивился, когда в шарпе такой атрибут ввести успели
извините, я ошибся, действительно в с# так делать нельзя.
0
06.05.2013, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 14:06
Помогаю со студенческими работами здесь

Композиция и коллекция классов, использование интерфейсов
Разработать свою программу с коллекцией классов. Использовать один из стандартных «списков» языка...

Выяснить, что представляют из себя отношения Ф композиция Ф и Ф композиция Ф^{-1}
Добрый день. До этого у меня было такое задание: Выяснить, какими из свойств: рефлексивность,...

композиция
Всем привет. Помогите пожалуйста выполнить задание, т.к. я ещё в этом нуб) Даны три вещественные...

Композиция
Добр время суток. Объясните пожалуйста принцип действия композиции и как с ней работать и что это...


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

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