Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
11 / 10 / 1
Регистрация: 10.11.2008
Сообщений: 67

Один объект изменяет данные другого

13.09.2011, 20:48. Показов 3095. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В одном из учебников "Напишите программу в стиле ООП, удовлетворяющую следующим условиям: в программе должны быть два класса и два объекта, принадлежащих разным классам; один объект с помощью метода своего класса должен так или иначе изменять данные другого объекта."


Не понимаю как это может быть.

Нужен пример для понимания.


C#
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
27
28
29
30
31
32
Class cl1
{
public void test()
{
Console.WriteLine("Eto cl1");
}
 
 
}
 
 
Class cl2
{
public void test2()
{
Console.WriteLine("Eto cl2");
}
 
}
 
Class example
 
static void main()
{
 cl1 obj1=new cl1();
 cl2 obj2=new cl2();
 
 
obj1.test1();
obj2.test2();
 
}
Мое понимание ООП этим ограничевается(.
один объект с помощью метода своего класса должен так или иначе изменять данные другого объекта.
Как это понять?


учебник http://younglinux.info/oopytho... omment-261
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2011, 20:48
Ответы с готовыми решениями:

Как вносить данные в объект сразу по нескольким полям за один раз
Всем привет, допустим, хочу вносить данные в объект в консоли вот так Имя...(курсор здесь и здесь вношу) Фамилия...(потом могу ...

Один объект поверх другого
Здрасти. Как и во всех играх одни объекты находятся над другими и обратно. каждый ров в игре ложится по верх другого. И когда машинка или...

Шейдеры: Видеть один объект на фоне другого
У меня уже есть 2 шейдера. Первый маска, другой для объектов. через Маску я вижу объекты со вторым шейдером, и все другие. Мне же надо...

6
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
13.09.2011, 22:24
вот такой код с двумя вариантами изменения
C#
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Data;
using System.IO;
using System.Text;
 
namespace TempConsoleProject {
    class A {
        int intValue;
        public int IntValue {
            get { return intValue; }
            set { intValue = value; }
        }
        public A(int intValueIn) {
            intValue = intValueIn;
        }
        public void PrintIntValInConsole() {
            Console.WriteLine(this.intValue);
        }
    }
    class B {
        public A SetIntValueInA(A aObj, int val) {
            aObj.IntValue = val;
            return aObj;
        }
        public void SetIntValInAWithRef(ref A aObj, int val) {
            aObj.IntValue = val;
        }
    }
    class Program {
        static void Main(string[] args) {
            A aObj = new A(2);
            aObj.PrintIntValInConsole();
            B b = new B();
            aObj = b.SetIntValueInA(aObj, 2322);
            aObj.PrintIntValInConsole();
            b.SetIntValInAWithRef(ref aObj, 34234);
            aObj.PrintIntValInConsole();
 
            Console.WriteLine("Profit!");
            Console.ReadKey();
        }
    }
}
0
11 / 10 / 1
Регистрация: 10.11.2008
Сообщений: 67
13.09.2011, 23:03  [ТС]
Спасибо.

ППЦ(. Пример ацкосложный для моего уровня.


C#
1
public A SetIntValueInA(A aObj, int val)
Что это такое? Я пока что знаю только как объявить по обычному функцию например public SetIntValueInA(int val);
C#
1
A aObj = new A(2);
А здесь как? Значение через класс. Эта двойка относится к
C#
1
2
public A(int intValueIn) {
            intValue = intValueIn;
Но как это так класс и функция с одним именем, и можно использовать эту функцию через ее класс?
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
13.09.2011, 23:07
по словам:
public - модификатор доступа
A - тип переменной, которую возвращает метод (в данном случае это будет объект класса А - "А" - это имя класса, название типа)
SetIntValueInA - имя метода
A aObj - тип и имя первого аргумента
int val - тип и имя второго аргумента

аналогично как вы объявляете вот такой метод:
C#
1
2
3
public int Multipling(int a. int b){
   return a * b;
}
структура объявления так же
0
11 / 10 / 1
Регистрация: 10.11.2008
Сообщений: 67
14.09.2011, 00:00  [ТС]
Хочу сделать свой пример более понятный, но не знаю как написать функцию на изменение значения другой функции.

У тебя там похоже это и реализовано, но я не могу это понять.

C#
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
namespace ConsoleApplication1
{
    class a
    {
            public int Value()
        {
            int a = 5;
            return a;
        }
 
    }
 
    class b
    {
        public int changeValue(int b)
        {
            return b;
        }
 
    }
 
    class program
    {
        static void Main()
        {
 
            a a1 = new a();
            Console.WriteLine("Value = " +a1.Value());
 
            b b1 = new b();
 
            Console.WriteLine("New Value=" + b1.changeValue(10));
          }
 
    }
 
 
 
 
 
 
}
Помогите мне описать функцию changeValue() чтобы менялось значение функции Value().
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
14.09.2011, 01:04
почитайте про классы (они же типы фактически) и про методы (статические и нестатические)

Добавлено через 33 минуты
сокращу свой код
наш главный класс:
C#
1
2
3
    class MainClass{
        public int a;
    }
класс, объекты которого изменяют объекты главного класса:
C#
1
2
3
4
5
6
    class ChangerClass{
        public MainClass ChangeMainClass(MainClass mcObject, int newA){
            mcObject.a = newA;
            return mcObject;
        }
    }
метод который изменяет объекты главного класса должен (если логически подумать) принимать одним из аргументов объект главного класса (у нас это (MainClass mcObject), который он должен изменить и значение, на которое должен изменить какое-то определенное поле объекта (в данном случае это поле "public int a"); к тому же этот метод должен возвращать какой-то новый объект, который уже этот метод изменил - это будет объект типа MainClass (это мы указываем когда декларируем метод: public MainClass) и в коде он возвращается тут: return mcObject.
вот пример кода:
C#
1
2
3
4
5
6
            MainClass mcObject = new MainClass(); //создаем объект класса
            mcObject.a = 123;  //полю присваиваем значение
            Console.WriteLine(mcObject.a); //показываем
            ChangerClass ccObject = new ChangerClass(); //создаем объект класса, который будет изменять объект главного класса
            mcObject = ccObject.ChangeMainClass(mcObject, 456); //собственно изменяем
            Console.WriteLine(mcObject.a); //показываем что объект действительно изменился
как более подробно объяснить я не знаю
у меня складывается впечатление что вам нужно сесть и нормально разобраться с подходом объектно-ориентированного программирования.
для этого почитайте абсолютно любую книгу об этом. там где нет даже примеров кода. просто почитайте про классы, поля и методы (функции) объектов класса.
Цитата Сообщение от Silock Посмотреть сообщение
не знаю как написать функцию на изменение значения другой функции
вы неправильно выразились. если делать то, что вы написали, то тут нужно использовать интерфейсы, но читайте про ООП. начинайте с малого и простого - поймете что из себя представляют классы и их объекты - это уже большой шаг к ОО-программированию
1
11 / 10 / 1
Регистрация: 10.11.2008
Сообщений: 67
14.09.2011, 12:45  [ТС]
Мне все понятно кроме этой конструкции, которую нигде не встречал. Может линк на msdn можешь дать?

p
C#
1
2
3
4
ublic MainClass ChangeMainClass(MainClass mcObject, int newA){
                        mcObject.a = newA;
                        return mcObject;
                }
C#
1
 mcObject = ccObject.ChangeMainClass(mcObject, 456)

Если не присваивать mcObject, то тоже будет работать.
C#
1
2
ccObject.ChangeMainClass(mcObject, 456)
Console.WriteLine(mcObject.a);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2011, 12:45
Помогаю со студенческими работами здесь

Какое событие происходит когда в форме один объект входит в область другого объекта?
Добрый день форумчане. пытаюсь создать мини-игрульку в С#. В общем PictureBox движется по форме с помощью стрелок. И в форме есть...

Изменение значений одного листа изменяет значения другого
Здравствуйте! У меня одна проблема, в принципе название говорит само за себя. private void Form1_Load(object sender, EventArgs e) ...

Не изменяет данные
Всем привет! Есть BindingSource и в нём результат запроса select DEPART_ID,DEPART_NAME, isnull(ONLY_CALL,0) as ONLY_CALL from...

Кто изменяет данные?
При переходе по записям на форме, где-то в коде происходит изменение или переход в режим редактирования. Как отследить это событие?

Почему БД изменяет данные после запятой?
Доброго времени суток. Не могу понять почему после кода указанного ниже, БД выдает немного кривоватые значения. <?php ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru