Создание нескольких объектов класса и их сохранение (Нужен пример)
Собственно вопрос в названии темы. Можно какую-нибудь самую простейшую программу, которая создает сначала первый объект, далее сохраняет его, а потом создает второй объект этого же класса и чтобы была возможность брать данные для второго объекта из первого.
Код, который примерно хотелось бы видеть.
1 2 3 4 5 6 7 8 9
/*class.h*/ class gamer { public: //Здесь функции, связанные с классом (Изменение money, name и т.д. и их сохранение) private: string name; int money; }
1 2 3 4 5 6 7 8 9
#include <> int main() { gamer *vasya = new gamer(); // Его name, money delete vasya; gamer *petya = new gamer(); //Взять money из vasya и передать их в *petya }
Если нет времени писать код, то дайте, пожалуйста, ссылку на литературу
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Сохранение списка объектов класса в ручную, сохранение в XML. Без сериализации.
Здравствуйте! Хотел спросить. Как можно сохранить список объектов в XML файл вручную? Я.

Нужен пример неизменяемого класса и класса от которого нельзя наследоваться
Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью.

Сохранение объектов класса в файл
Есть несколько массивов, которые создаются по ходу работы приложения, и которые нужно сохранять в.
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
1 2 3 4 5 6 7 8 9
#include <> int main() { gamer *vasya = new gamer(); int playerMoney = vasya->money; // GetMoney() delete vasya; gamer *petya = new gamer(); petya->money = playerMoney; // лучше конечно написать set-метод для соблюдения инкапсуляции }
Регистрация: 22.10.2012
Сообщений: 69
Сообщение от SummerRain 
1 2 3 4 5 6 7 8 9
#include <> int main() { gamer *vasya = new gamer(); int playerMoney = vasya->money; // GetMoney() delete vasya; gamer *petya = new gamer(); petya->money = playerMoney; // лучше конечно написать set-метод для соблюдения инкапсуляции }
ну это понятно, а как мне деньги Василия перевести на счет Петра?
Создание экземпляров класса в цикле.
Здравствуйте, у меня возник вопрос, ответы на который не удалось подыскать в инете — везде показывают, как динамически создавать всякие кнопки и прочие визуальные контролы.
У меня есть нестатический класс MyClass. Есть цикл for. И в цикле надо создавать экземпляры этого класса.
Обычно я создаю экземпляр класса, объявляя переменную и инициализируя её конструктором:
MyClass MyClassVariable = new MyClass(1, "Вася");
Теперь у меня в переменной MyClassVariable хранится экземпляр класса.
Предположим, я делаю так в цикле for:
1 2 3 4
for(int i = 0; i 10; i++) { MyClass MyClassVariable = new MyClass(i, "Вася"); }
Но в таком случае у меня переменная MyClassVariable будет перезаписываться. А как сделать так, что бы в цикле создавать и инициализировать столько переменных, сколько мне нужно и что бы на выходе из цикла у меня были разные переменные, в каждой из которых был бы свой экземпляр класса?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Создание объектов класса в цикле
Помогите, пожалуйста, с задачей. Создать приложение (Console Application), в котором в цикле.
Перебор экземпляров массива в цикле
Какой вариант быстрее? Есть ли вообще разница и насколько большая? Зависит ли от типа объекта в.
Объявление класса, создание экземпляров класса. Наследование классов
Вообщем начал делать программу:"Создать класс Матрицы, обеспечивающего размещение матрицы.
Заблокирован
попробуйте слаживать их в ArrayList(System.Collections)
и при извлечении явно приводить к MyClass
145 / 129 / 27
Регистрация: 20.12.2010
Сообщений: 242
создавай массив объектов:
1 2 3 4 5
MyClass[] MyClassVariable = new MyClass[10]; for(int i = 0; i 10; i++) { MyClassVariable[i] = new MyClass(i, "Вася"); }
398 / 365 / 54
Регистрация: 23.05.2010
Сообщений: 716
Спасибо, вроде бы нашёл подходящий выход, использование типизированного массива List<>.
339 / 285 / 62
Регистрация: 02.09.2010
Сообщений: 547
Вот посмотри я прямо вчера делал, тоже задавался таким вопросом, возможно поможет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public static void Main() { ListStudent> koll = new ListStudent>(); Console.WriteLine("введите число учеников"); int n = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i n; i++) { Console.WriteLine("Введите имя студента"); string z = Console.ReadLine(); Console.WriteLine("Введите номер группы"); int x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите средний бал"); double y = Convert.ToDouble(Console.ReadLine()); koll.Add(new Student(z,x,y)); } Console.WriteLine("Класс укомплектован"); Luchshii(koll); Console.ReadKey(); } }
Создание экземпляров класса с именами из списка
Нужно создавать экземпляры одного класса с именами name1, name2 и так далее, т.е. с именами, взятыми из list[1][1], list[2][1] и т.д.
Если экземпляры классов инициализировались вручную, то было бы так:
name1 = class(value1) name2 = class(value2)
Но не представляю методы, которыми это можно реализовать. UPD1: Класс:
class func(): def __init__(self, visibility, ftype, body): .
Существующий список:
list = ['private', 'Void', 'SetupWheels', 'body']
func_list = <>
Надо сделать так:
for i, val in enumerate(c): *новый ключ в словаре, равный значению list[2]* = func(list[0], list[0], list[3])
Классы, структуры и пространства имен
C# является полноценным объектно-ориентированным языком. Это значит, что программу на C# можно представить в виде взаимосвязанных взаимодействующих между собой объектов.
Описанием объекта является класс , а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке, у которого есть имя, возраст, какие-то другие характеристики. То есть некоторый шаблон — этот шаблон можно назвать классом. Конкретное воплощение этого шаблона может отличаться, например, одни люди имеют одно имя, другие — другое имя. И реально существующий человек (фактически экземпляр данного класса) будет представлять объект этого класса.
В принципе ранее уже использовались классы. Например, тип string , который представляет строку, фактически является классом. Или, например, класс Console , у которого метод WriteLine() выводит на консоль некоторую информацию. Теперь же посмотрим, как мы можем определять свои собственные классы.
По сути класс представляет новый тип, который определяется пользователем. Класс определяется с помощью ключевого слова сlass :
class название_класса < // содержимое класса >
После слова class идет имя класса и далее в фигурных скобках идет собственно содержимое класса. Например, определим в файле Program.cs класс Person, который будет представлять человека:
class Person

Однако такой класс не особо показателен, поэтому добавим в него некоторую функциональность.
Поля и методы класса
Класс может хранить некоторые данные. Для хранения данных в классе применяются поля . По сути поля класса — это переменные, определенные на уровне класса.
Кроме того, класс может определять некоторое поведение или выполняемые действия. Для определения поведения в классе применяются методы.
Итак, добавим в класс Person поля и методы:
class Person < public string name = "Undefined"; // имя public int age; // возраст public void Print() < Console.WriteLine($"Имя: Возраст: "); > >
В данном случае в классе Person определено поле name , которое хранит имя, и поле age , которое хранит возраст человека. В отличие от переменных, определенных в методах, поля класса могут иметь модификаторы, которые указываются перед полем. Так, в данном случае, чтобы все поля были доступны вне класса Person поля определены с модификатором public .
При определении полей мы можем присвоить им некоторые значения, как в примере выше в случае переменной name . Если поля класса не инициализированы, то они получают значения по умолчанию. Для переменных числовых типов это число 0.
Также в классе Person определен метод Print() . Методы класса имеют доступ к его поля, и в данном случае обращаемся к полям класса name и age для вывода их значения на консоль. И чтобы этот метод был виден вне класса, он также определен с модификатором public .
Создание объекта класса
После определения класса мы можем создавать его объекты. Для создания объекта применяются конструкторы . По сути конструкторы представляют специальные методы, которые называются так же как и класс, и которые вызываются при создании нового объекта класса и выполняют инициализацию объекта. Общий синтаксис вызова конструктора:
new конструктор_класса(параметры_конструктора);
Сначала идет оператор new , который выделяет память для объекта, а после него идет вызов конструктора .
Конструктор по умолчанию
Если в классе не определено ни одного конструктора (как в случае с нашим классом Person), то для этого класса автоматически создается пустой конструктор по умолчанию, который не принимает никаких параметров.
Теперь создадим объект класса Person:
Person tom = new Person(); // создание объекта класса Person // определение класса Person class Person < public string name = "Undefined"; public int age; public void Print() < Console.WriteLine($"Имя: Возраст: "); > >

Для создания объекта Person используется выражение new Person() . В итоге после выполнения данного выражения в памяти будет выделен участок, где будут храниться все данные объекта Person. А переменная tom получит ссылку на созданный объект, и через эту переменную мы можем использовать данный объект и обращаться к его функциональности.
Обращение к функциональности класса
Для обращения к функциональности класса — полям, методам (а также другим элементам класса) применяется точечная нотация точки — после объекта класса ставится точка, а затем элемент класса:
объект.поле_класса объект.метод_класса(параметры_метода)
Например, обратимся к полям и методам объекта Person:
Person tom = new Person(); // создание объекта класса Person // Получаем значение полей в переменные string personName = tom.name; int personAge = tom.age; Console.WriteLine($"Имя: Возраст "); // Имя: Undefined Возраст: 0 // устанавливаем новые значения полей tom.name = "Tom"; tom.age = 37; // обращаемся к методу Print tom.Print(); // Имя: Tom Возраст: 37 class Person < public string name = "Undefined"; public int age; public void Print() < Console.WriteLine($"Имя: Возраст: "); > >
Консольный вывод данной программы:
Имя: Undefined Возраст: 0 Имя: Tom Возраст: 37
Добавление класса
Обычно классы помещаются в отдельные файлы. Нередко для одного класса предназначен один файл. Если мы работаем над проектом вне среды Visual Studio, используя .NET CLI, то нам достаточно добавить новый файл класса в папку проекта. Например, добавим новый файл, который назовем Person.cs и в котором определим следующий код:
class Person < public string name = "Undefined"; public void Print() < Console.WriteLine($"Person "); > >
Здесь определен класс Person с одним полем name и методом Print.
В файле Program.cs , который представляет основной файл программы используем класс Person:
Person tom = new Person(); tom.name = "Tom"; tom.Print(); // Person Tom

Visual Studio предоставляет по умолчанию встроенные шаблоны для добвления класса. Для добавления класса нажмем в Visual Studio правой кнопкой мыши на название проекта:

В появившемся контекстном меню выберем пункт Add -> New Item. (или Add -> Class. )
В открывшемся окне добавления нового элемента убедимся, что в центральной части с шаблонами элементов у нас выбран пункт Class . А внизу окна в поле Name введем название добавляемого класса — пусть он будет назваться Person :

В качестве названия класса можно вводить как Person, так и Person.cs. И после нажатия на кнопку добавления в проект будет добавлен новый класс, в котором можно определить тот же код и также использовать в файле Program.cs.
Таким образом, мы можем определять классы в отдельных файлах и использовать их в программе.