C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Классы в Си-шарп. Объявление классов и создание объектов
Класс – это абстрактный тип данных. Другими словами, класс – это некоторый шаблон, на основе которого будут создаваться его экземпляры – объекты.

В Си-шарп классы объявляются с помощью ключевого слова class. Общая структура объявления выглядит следующим образом:

[модификатор доступа] class [имя_класса]
{
   //тело класса
}

Модификаторов доступа для классов есть два:

- public – доступ к классу возможен из любого места одной сборки либо из другой сборки, на которую есть ссылка;
- internal – доступ к классу возможен только из сборки, в которой он объявлен.

Что такое сборка?

Сборка (assembly) – это готовый функциональный модуль в виде exe либо dll файла (файлов), который содержит скомпилированный код для .NET. Сборка предоставляет возможность повторного использования кода.

При объявлении класса модификатор доступа можно не указывать, при этом будет применяться режим по умолчанию internal.

Класс следует объявлять внутри пространства имен namespace, но за пределами другого класса (возможно также объявление класса внутри другого - вложенные типы, но это тема отдельного урока).

Пример объявления классов Student и Pupil:

namespace HelloWorld
{
   class Student //без указания модификатор доступа, класс будет internal
   {
     //тело класса
   }
   public class Pupil
  {
    //тело класса
  }
}

Члены класса

Классы в Си-шарп могут содержать следующие члены:

- поля;
- константы;
- свойства;
- конструкторы;
- методы;
- события;
- операторы;
- индексаторы;
- вложенные типы.

Все члены класса, как и сам класс, имеют свой уровень доступа. Только у членов их может быть уже пять:

- public – доступ к члену возможен из любого места одной сборки, либо из другой сборки, на которую есть ссылка;
- protected – доступ к члену возможен только внутри класса, либо в классе-наследнике (при наследовании);
- internal – доступ к члену возможен только из сборки, в которой он объявлен;
- private – доступ к члену возможен только внутри класса;
- protected internal - доступ к члену возможен из одной сборки, либо из класса-наследника другой сборки.

Не указав модификатор доступа для члена, по умолчанию ему будет присвоен режим private.

При помощи модификаторов доступа в Си-шарп реализуется один из базовых принципов ООПинкапсуляция.

В этом уроке мы рассмотрим такие члены класса, как поля и константы.

Поля класса

Поле – это переменная, объявленная внутри класса. Как правило, поля объявляются с модификаторами доступа private либо protected, чтобы запретить прямой доступ к ним. Для получения доступа к полям следует использовать свойства или методы.

Пример объявления полей в классе:

class Student
{
   private string firstName;
   private string lastName;
   private int age;
   public string group; // не рекомендуется использовать public для поля
}

Создание объектов

Объявив класс, мы теперь можем создавать объекты. Делается это при помощи ключевого слова new и имени класса:

namespace HelloWorld
{
   class Student
   {
     private string firstName;
     private string lastName;
     private int age;
     public string group;
   }
   class Program
   {
     static void Main(string[] args)
     {
       Student student1 = new Student(); //создание объекта student1 класса Student
       Student student2 = new Student();
     }
   }
}

Доступ к членам объекта осуществляется при помощи оператора точка «.» :

static void Main(string[] args)
{
   Student student1 = new Student();
   Student student2 = new Student();

   student1.group = "Group1";
   student2.group = "Group2";

   Console.WriteLine(student1.group); // выводит на экран "Group1"
   Console.Write(student2.group);
   Console.ReadKey();
}

Такие поля класса Student, как firstName, lastName и age указаны с модификатором доступа private, поэтому доступ к ним будет запрещен вне класса:

static void Main(string[] args)
{
   Student student1 = new Student();
   student1.firstName= "Nikolay"; //ошибка, нет доступа к полю firstName. Программа не скомпилируется
}

Константы

Константы-члены класса ничем не отличаются от простых констант внутри методов, которые рассматривались в уроке переменные и константы.

Константа – это переменная, значений которой нельзя изменить. Константа объявляется с помощью ключевого слова const. Пример объявления константы:

class Math
{
   private const double Pi = 3.14;
}


Домашнее задание

Создайте какой-нибудь класс (например класс Автомобиль), объявите в нем поля с различными режимами доступа (private, protected, internal, public). Создайте объект класса, и попытайтесь записать/получить данные с различных полей.

PS. Подписывайтесь на обновления блога в форме ниже, и будьте в курсе всех обновлений!
Понравилась статья? Подпишись на рассылку и узнавай первым о новых уроках по почте!


Поделиться с друзьями:
21 июн 2013 22:53
wegorcag 16 янв 2017 19:45
Простейшая система заработка от Ольги Арининой

С запуска одной системы вы будете получать доход 2800 рублей в день.
Запускайте 2 системы и ваш доход - 5600 руб в день!

Все подробности на нашем сайте. >> robot.zarplatt.ru <<

Ваш первый доход вы гарантированно получите
в течение 24 часов после запуска системы!

varinacag 16 янв 2017 00:55
Предлагаю Вам возможность работы (подработки) в интернете, выбирайте самостоятельно более чем из тридцати проверенных вариантов заработка наиболее удобный и близкий для Вас.
Более подробная информация у нас на сайте. >> zarplatt(точка)ru <<

legorcag 15 янв 2017 22:06
Срочно требуются рабочие. Обработка зказов на дому.

Без вложений, на системе автоматического приёма и обработки заказов.

Более подробная информация >> obrabotka.zarplatt.ru <<

megorcag 13 янв 2017 12:49
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

- Соблюдение трудового кодекса
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.
- Гарантированные стабильные выплаты заработанных денег.
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.

Пройдите регистрацию на нашем сайте. > airline.zarplatt.ru <

Без вложений, опыт и профессиональные навыки не требуются!

tpavelcag 13 янв 2017 02:05
Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > like.zarplatt.ru <

vegorcag 12 янв 2017 23:34
Теперь Ваш новый график работы будет выглядеть так -
В день вы будете заняты всего 60 минут - остальное время посвящайте себе и своим близким!

Мы гарантируем:
- Первые деньги на вашей карте уже сегодня.
- Обучение. Поддержка учеников пн-птн с 10-18 мск.
- Куратор, который скоординирует ваше обучение.
- Никаких сложных схем!
- Работаете дома, по своему графику.

Все подробности у нас на сайте. ( stabilno.zarplatt.ru )

pegorcag 11 янв 2017 23:23
Стабильная работа с обучением, высокая оплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Ознакомтесь с условиями на нашем сайте. > realno.zarplatt(точка)ru <

DjinwaB 10 янв 2017 13:57
Предлагаем отборные чистые базы сайтов, собранные вручную. Все базы 2017 года - подвергаются
сильной фильтровке на работоспособность, актуальность, заспамленность и другое. Базы обязательно
вам понравятся. Любой кто пользовался нашими базами - всегда остовался доволен.
Посмотреть базы можно в группе (vk . com / trasts) ВК: https://vk.com/trasts

propasportkep 09 янв 2017 09:03
Недействительный паспорт гражданина рф в базе фмс
-Узнай как. Официально и быстро. Набери сайт пропаспорт

mihpir889 08 янв 2017 09:24

{
private int mass;
protected int speed;
internal string name;
public string fuel = "дизель";
}

class MainClass
{
public static void Main(string[] args)
{

Car Traktor = new Car();

Traktor.name = "Трактор";
Console.WriteLine(Traktor.fuel);
Console.ReadKey();

}

}


ppavelcag 08 янв 2017 00:57
Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > like.zarplatt.ru <

segorcag 07 янв 2017 23:12
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами до 11 000 руб.

Работая в нашей компании Вы получаете:

- Соблюдение трудового кодекса
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.
- Гарантированные стабильные выплаты заработанных денег.
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.

Пройдите регистрацию у нас на сайте. > airline.zarplatt.ru <

Без вложений, опыт и профессиональные навыки не требуются!

vegorcag 03 янв 2017 16:24
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

- Соблюдение трудового кодекса
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.
- Гарантированные стабильные выплаты заработанных денег.
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.

Пройдите регистрацию у нас на сайте. > airline.zarplatt.ru <

Без вложений, опыт и профессиональные навыки не требуются!

Сезима 20 май 2016 11:07


Train: Пункт назначения, Номер поезда, Время отправления,
Число мест (общих, купе, плацкарт, люкс).
Создать массив объектов. Вывести:
a) список поездов, следующих до заданного пункта назначения;
b) список поездов, следующих до заданного пункта назначения и отправляющихся после заданного часа;
c) список поездов, отправляющихся до заданного пункта назначения и имеющих общие места.

Пожалуйста помогите....



Akhvo 07 мар 2016 19:08
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lesson15
{
public class Student
{
internal string name;
internal int course;
internal bool stipend;

public Student(string name)// конструктор для учета поступивших студентов
{
this.name = name;
course = 1;
stipend = true;
}

public Student(string name, int course, bool stipend)
{
this.name = name;
this.course = course;
this.stipend = stipend;
}

}
class Program
{
static void Main(string[] args)
{

Console.Write("Заносим в базу новобранцев.\nВведите имя:");
Student st1 = new Student(Console.ReadLine());

// Проверяем что записали с помощью конструктора
Console.Write("\nНа обучение принят студент:\nИмя: {0}\nЗачислен на курс: {1}\nНаличие стипендии: {2}", st1.name, st1.course, st1.stipend);

Console.ReadKey();
}
}
}

Владимир Шебуков 29 фев 2016 23:11
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BBY01
{
class Car
{
public string Colour;
public string Name;
public string Number;
// string Owner;
}
class Program
{
static void Main(string[] args)
{
Car house = new Car();
house.Colour = "красный";
house.Name = "Vovalia loycs";
// house.Owner = "Shebukov"; Ошибка в доступе отказано!
house.Number = "00-01SH";
Console.WriteLine(house.Colour);
Console.WriteLine(house.Name);
Console.WriteLine(house.Number);
// Console.WriteLine(house.Owner); Ошибка , в доступе отказано


Console.ReadKey();
}
}
}

voloshyn-i 13 фев 2016 00:32
namespace ConsoleApplication4
{
class Car
{
public string Model;
private string Tipe;
protected string Color;
internal double Motor;

}
class Program
{
static void Main(string[] args)
{
Car a = new Car();
a.Model = "Ceed";
a.Motor = 1.4;
Console.WriteLine(a.Model);
Console.WriteLine(a.Motor);
Console.ReadKey();
}
}
}

bumpo 15 янв 2016 20:37

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Console_OOP1
{
class car
{
public string Name;
public int enginevolume, enginepower, mass, speed;
}
class Program
{
static void Main(string[] args)
{
car data1 = new car();
Console.WriteLine(" Enter the car name");
data1.Name = Console.ReadLine();

Console.WriteLine(" Enter the car engine volume");
data1.enginevolume = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Enter the car engine power");
data1.enginepower = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Enter the car mass");
data1.mass = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Enter the car speed");
data1.speed = Convert.ToInt32(Console.Read());
Console.Write("The car type is:" + data1.Name + " ");

Console.Write("The car engine volume is: " + data1.enginevolume +"cm" );

Console.Write("The car engine power is:" + data1.enginepower +"kW");

Console.Write ("The car mass is:" + data1.mass +" kg" );

Console.Write("The car speed is:" + data1.speed +" kmh");
Console.ReadKey();
}
}
}

neronovs 05 янв 2016 10:59

class Data
{
public string FirstName;
public string SecondName;
public string Male;
internal int Age;
}

class Program
{
static void Main(string[] args)
{
Data data1 = new Data();
Console.WriteLine("Input your first name");
data1.FirstName = Console.ReadLine();
Console.WriteLine("Input your family name");
data1.SecondName = Console.ReadLine();
Console.WriteLine("Input your gender");
data1.Male = Console.ReadLine();
Console.WriteLine("Input your age");
data1.Age = Convert.ToInt32(Console.ReadLine());

Console.Write("You are: "+data1.FirstName + " ");
Console.Write(data1.SecondName + " ");
Console.Write(data1.Male + " ");
Console.Write(data1.Age);
Console.ReadKey();
}
}

ЮЛИЯ 29 ноя 2015 13:45
Приведите пример использования статических членов класса (статических полей и методов). Помогите разобраться

vostok7777 04 ноя 2015 22:16

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication23
{
class Automobile
{
string marka;
protected string color;
public int weight;
protected internal int max_speed;
internal int height;
public void dannye (int max_speed, int weight, int height)
{
Console.WriteLine("Автомобиль весом " + weight +" кг "+ " высотой " + height + " см " + " может развивать максимальную скорость " + max_speed + " км/ч");
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
Automobile VAZ = new Automobile();
Console.WriteLine("Введите максимальную скорость автомобиля км/ч");
VAZ.max_speed = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите вес автомобиля в кг");
VAZ.weight = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите высоту автомобиля в см");
VAZ.height = Convert.ToInt32(Console.ReadLine());
VAZ.dannye(VAZ.max_speed, VAZ.weight, VAZ.height);
}
}
}


vladislav 21 окт 2015 15:26
Automobile car1 = new Automobile();
Console.WriteLine("Введите информацию об автомобиле");
Console.Write("Марка автомобиля ");
car1.marka = Console.ReadLine();
Console.Write("Цвет автомобиля ");
car1.color = Console.ReadLine();
Console.Write("Серийный номер автомобиля ");
car1.serial_number = Console.ReadLine();
Console.WriteLine("Марка\t\tЦвет\t\tСерийный номер");
Console.WriteLine(car1.marka+ "\t\t" +car1.color+ "\t\t"+car1.serial_number);

Console.ReadLine();

Маским 16 авг 2015 14:00
using System;

namespace class1
{
class Car
{

private string Engine;
internal string steering_wheel;
protected string light;
public string wheel;



}


class Program
{
public static void Main(string[] args)
{
Car audi = new Car();

audi.steering_wheel = "Audi_r8";

audi.wheel = "W";




}
}

class My : Car
{
public My()
{
light = "russia";
Console.WriteLine(light);


wheel = "W";

steering_wheel = "r";




}

}

ROOT 10 авг 2015 21:16

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication27
{
class Животные
{
private string Млекопитающие;
public int Рост_см;
public int Вес_кг;
public string Окрас;
public string Имя;
public int Возраст;
public string Дата_рождения_ЧЧ_ММ_ГГ;
}
class Program
{
static void Main(string[] args)
{
Животные кот = new Животные();
Console.WriteLine("Введите имя: ");
кот.Имя = Console.ReadLine();
Console.WriteLine("Введите возраст: ");
кот.Возраст = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите дату рождения: ");
кот.Дата_рождения_ЧЧ_ММ_ГГ = Console.ReadLine();
Console.WriteLine("Введите вес: ");
кот.Вес_кг = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите рост: ");
кот.Рост_см = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите окрас: ");
кот.Окрас = Console.ReadLine();
Console.WriteLine("\nЧтобы получить информацию, нажмите любую клавишу...");
Console.ReadKey();
Console.Clear();
Console.WriteLine("Информация о животном :");
Console.WriteLine("Имя " + кот.Имя);
if (кот.Возраст == 1)
Console.WriteLine("Возраст " + кот.Возраст + " год");
else if (кот.Возраст == 2 || кот.Возраст == 3 || кот.Возраст == 4)
Console.WriteLine("Возраст " + кот.Возраст + " года");
else if (кот.Возраст > 4 && кот.Возраст < 15)
Console.WriteLine("Возраст " + кот.Возраст + " лет");
else if (кот.Возраст > 15)
Console.WriteLine("Введено слишком большое число. Коты так долго не живут");
else if (кот.Возраст < 0)
Console.WriteLine("Возраст не может быть отрицательным числом!");
Console.WriteLine("Дата рождения(ЧЧ.ММ.ГГ) " + кот.Дата_рождения_ЧЧ_ММ_ГГ);
Console.WriteLine("Вес = " + кот.Вес_кг + " кг");
Console.WriteLine("Рост = " + кот.Рост_см + " см");
Console.WriteLine("Окрас " + кот.Окрас);
Console.ReadKey();
}
}
}


Warguss 28 май 2015 11:42

class Car
{
// по умолчанию поле private(закрытое поле)
string Colour ;

// Открытые поля
public double weight;
public int maxSpeed;

// поле открыто в сборке
internal bool boot;
}


class Program
{
static void Main()
{
Car Porsche = new Car();
Porsche.boot = true;
Porsche.maxSpeed = 325;
Porsche.weight = 1735.5;

// Так нельзя поле не видно в этом классе(Закрытое поле)
// Porsche.Colour = "green";

Car Audi = new Car();
Audi.boot = false;
Audi.maxSpeed = 275;
Audi.weight = 1245;

// Так нельзя поле не видно в этом классе(Закрытое поле)
// Audi.Colour = "red";

Console.WriteLine(@"Автомобиль Porsche Характеристики:
Имеется ли багажник: {0}
Максимальная скорость: {1}
вес автомобиля: {2}", Porsche.boot, Porsche.maxSpeed, Porsche.weight );


Console.WriteLine(@"Автомобиль Audi Характеристики:
Имеется ли багажник: {0}
Максимальная скорость: {1}
вес автомобиля: {2}", Audi.boot, Audi.maxSpeed, Audi.weight);

Console.ReadKey();
}
}

Александр_Бугай 09 май 2015 09:48
class Human
{

private int age;
public string name;
string surname;
protected string gender;
protected internal int weight;
public static void Main(string[] args)
{
Human human1 = new Human();
human1.age = Convert.ToInt32(Console.ReadLine());
human1.name = "Ivan";
if (human1.age >= 18 && human1.age < 60) Console.WriteLine("He is an adult person");
if (human1.age <= 18) Console.WriteLine("He is an young person");
if (human1.age>=60) Console.WriteLine("He is an older person");
Console.ReadLine();
}
}

G1ffy 09 мар 2015 21:06

namespace ConsoleApplication5
{
class Car
{
private string model;
protected int id;
internal int age;
public double cost;

}
class Program
{
private string owner;
protected string prevOwner ;
internal int maxSpeed;
public int minSpeed;

static void Main(string[] args)
{
Car car1 = new Car();
Car car11 = new Car();
car1.model = "Mazda"; //'Console.Application5.Car.Model' is anaccessible due to its protection level
car1.id = "#22431994"; //'Console.Application5.Car.Model' is anaccessible due to its protection level
car1.age = 15;
car1.cost = 654913;
car1.owner = "Petrov"; // 'ConsoleApplication5.Car' does not contain a definition for 'owner' accepting
//a first argument of type 'ConsoleApplication5.Car' could be found (are you missing a using directive
//or an assembly reference?)
car1.prevOwner = "Gudilov"; // -II-
car1.maxSpeed = 170; // -II-
car1.minSpeed = 10; // -II-
Console.WriteLine(car1.model);
Console.WriteLine(car1.age);
Console.WriteLine(car1.Owner);
}
}
}

HHHaaa 09 фев 2015 17:10
А всё разобрался, я не писал ничего в потоке

HHHaaa 09 фев 2015 13:32
подсмотрел у baks85 немного решил дополнить, Админ если не трудно посмотри код, подскажи почему у меня не записывает в файл?

namespace ConsoleApplication16
{
public class auto
{
public string marka;
public string model;
public int number;
internal string perem;

public string zapis(string arg)
{
Console.WriteLine("Введите " + arg + " автомобиля");
perem = Convert.ToString(Console.ReadLine());
return perem;
}
public void writ(string text)
{
FileStream writefile = new FileStream("C:\\Users\\Для Папы\\Desktop\\Убучалка с#\\13 Классы\\1.txt", FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(writefile, Encoding.UTF8);
Console.WriteLine(text + "-" + perem);
writer.Close();
}
public void read()
{
FileStream readfile = new FileStream("C:\\Users\\Для Папы\\Desktop\\Убучалка с#\\13 Классы\\1.txt", FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(readfile, Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
reader.Close();
}
}


class Program
{
static void Main(string[] args)
{

Console.Clear();

string price = "з";
bool x = true;
string che;
auto newcar = new auto();


while (x==true)
{
Console.WriteLine("Нажмите Enter чтобы ввести новый авто");
Console.WriteLine("Введите " + " з " + " чтобы посмотреть прайс");
che = Console.ReadLine();
Console.ReadKey();

if (che != price)
{
newcar.number = Convert.ToInt32(newcar.zapis("Номер"));
newcar.writ("номер");


newcar.marka = newcar.zapis("Марку");
newcar.writ("Марка");



newcar.model = newcar.zapis("модель");
newcar.writ("модель");

}
else
{
x = false;
}
}
newcar.read();
Console.ReadKey();
}
}
}

baks85 25 дек 2014 22:36
Доброго времени суток!
Спасибо за знания, которыми вы делитесь с нами!

мне понравился предыдущий пример кода, решил похожее написать, совместив новую тему с работой с файлами....

собственно результат далее по тексту:
_______________________________________________________________
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication16
{
public class Somenewclass
{
public string brandname;
public string autoname;
string save = "e:\\listauto.txt";
public int autocost;
string perem = null;
public string readkeybord(string argums)
{
Console.WriteLine("введите " +argums +" автомобиля");
perem = Convert.ToString(Console.ReadLine());
return perem;
}

public void savetofile(string text)
{
FileStream savefile = new FileStream(save, FileMode.Append, FileAccess.Write);
StreamWriter writefile = new StreamWriter(savefile, Encoding.UTF8);
writefile.WriteLine(text +" = " +perem +"\r\n");
writefile.Close();
}
public void readfile()
{
Console.WriteLine("================================================================================");
FileStream readfile = new FileStream(save, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader reader = new StreamReader(readfile, Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
reader.Close();
Console.WriteLine("================================================================================");
}
}
class Program
{
static void Main(string[] args)
{
Somenewclass newcar1 = new Somenewclass();
newcar1.brandname = newcar1.readkeybord("марку");
newcar1.savetofile("Марка");

newcar1.autoname = newcar1.readkeybord("Название");
newcar1.savetofile("Название авто");

newcar1.autocost = Convert.ToInt32(newcar1.readkeybord("цену"));
newcar1.savetofile("Цена автомобиля");

newcar1.readfile();
Console.ReadKey();
}
}
}

pinguin-linuxoid 16 дек 2014 20:33
Огромное спасибо за ваши уроки.

Скидую пример своего кода по классам.
______________________________________________________

namespace ConsoleApplication1
{
class Pinguin
{
public string name = null;
private string place = "d:\\Class.txt";
private string text = null;

public void Text()
{
Console.WriteLine("Enter your text, " + name);
text = Convert.ToString(Console.ReadLine());
}

public void Print()
{
place = place.Replace("Class", name);
StreamWriter writer = new StreamWriter(place);
writer.WriteLine(text, Encoding.Default);
writer.Close();
}
public void Read()
{
Console.WriteLine("===================================================================");
place = place.Replace("Class", name);
StreamReader reader = new StreamReader(place);
Console.WriteLine(reader.ReadToEnd());
reader.Close();
Console.WriteLine("===================================================================");
}
}
class Program
{
static void Main(string[] args)
{
Pinguin little = new Pinguin();
little.name = "Pinguin-linuxoid";
little.Text();
little.Print();
little.Read();




Console.ReadKey();
}
}
}

Диманиак 21 ноя 2014 20:59
class Cars
{
private string Brand = "GM";
protected string Class = "E";
internal string Type;
public string FuelType;
}
class Program
{
static void Main(string[] args)
{
Cars Car1 = new Cars();
Car1.Brand = "VAG"; //Ошибка 1 "ConsoleApplication1.Cars.Brand" недоступен из-за его уровня защиты
Car1.Type = "limousine";
Car1.FuelType = "gas";
Console.WriteLine(Car1.Class);//Ошибка 2 "ConsoleApplication1.Cars.Brand" недоступен из-за его уровня защиты
Console.ReadKey();
}
}

Slavik 01 окт 2014 21:29
спасибо за урок

namespace HomeWorkClass
{
class City
{
public string yourCountry;
public string yourCity;
public string yourNativeCity;
string yourName;
}
class Program
{
static void Main(string[] args)
{
City cityy = new City();
Console.Write("Enter your native city: ");
cityy.yourNativeCity = Console.ReadLine();

Console.Write("\nEnter your country where you live: ");
cityy.yourCountry = Console.ReadLine();

Console.Write("\nEnter your city where you live: ");
cityy.yourCity = Console.ReadLine();

if (cityy.yourCity == cityy.yourNativeCity)
Console.WriteLine("\nYou live in your native city and in {0} !", cityy.yourCountry);
else
Console.WriteLine("\nYou moved form one city to the other !");
Console.ReadKey();
}
}
}

Oper 28 сен 2014 12:52
Admin, расскажи о структурах, и в каких случаях лучше использовать структуры, а в каких - классы.

Benzo 21 авг 2014 17:34
namespace MyFirstClass
{//в программе используем класс
class veniciles//описываем класс veniciles
{
public string marka;
public int age;
public int pas;
}

class Program
{
static void Main(string[] args)
{
try
{
veniciles car = new veniciles();//создаем объект(car) класса veniciles
Console.WriteLine("Введите марку машины, год выпуска и вместимость пассажиров");
car.marka = Console.ReadLine();//заполняем члены объекта
car.age = int.Parse(Console.ReadLine());
car.pas = int.Parse(Console.ReadLine());

Console.WriteLine("Марка машины {0}, {1} года выпуска и вместимостью {2} пассажира", car.marka, car.age, car.pas);

}
catch(FormatException)
{
Console.WriteLine("Марку машины нужно вводить буквами, год и вместимость - цифрами");
}
Console.ReadKey();



}
}
}

Максим 17 июн 2014 23:04
Андрей
---
Объект и экземпляр в данном случае это синонимы

Андрей 17 июн 2014 16:22
Вы говорите "Другими словами, класс – это некоторый шаблон, на основе которого будут создаваться его экземпляры – объекты." И "Объявив класс, мы теперь можем создавать объекты." Тут я наверно не соглашусь..не стоит путать понятия объекта и экземпляра. Если от одного класса на куче создать 100 экземляров

Class1 instance1 = new class1();
...............
Class1 instance100 = new class1();

мы получим, если мне не изменяет память, 100 ЭКЗЕМЛЯРОВ и 1 ОБЪЕКТ.
В объект вынесутся только методы и статические переменные. Нет смысла создавать дубляжи(логика разроботчиков c#). Связь м\у экземплярами и объектом идет по ссылке.

Максим 07 апр 2014 18:44
Дима
---
В классе Поезд может быть список вагонов List<Вагон> (прицепленные вагоны)

Дима 06 апр 2014 21:19
Ну да. подскажите как использовать List<> в данном случае, где можно создать и применить список?

Максим 06 апр 2014 20:06
Дима
---
"В классе «Место» запоминается номер места и фамилия пассажира" - это же объясняет, как класс Место должен выглядеть. В классе Место два поля - номер (int) и фамилия пассажира (string), конструктор и т.д.

Дима 06 апр 2014 19:40
Вариант 1. Поезд состоит из спальных, купейных и плацкартных вагонов. В спальном вагоне 24 места, в купейном 36 мест, в плацкартном 48 мест.
Пассажиры приходят в кассу и просят билеты с вероятностью 15% в спальный вагон, 55% в купейный вагон, 30% в плацкартный вагон.
Новые вагоны соответствующего типа вводятся в состав поезда по мере заполнения имею-щихся вагонов того же типа на 85%.
Разработать классы «Место», «Вагон» и «Поезд». В классе «Место» запоминается номер места и фамилия пассажира, в классе «Вагон» - тип вагона, общее количество мест и проданные места, в классе «Поезд» - прицепленные вагоны.
Подскажите как должен выглядеть класс например Место?

Максим 18 ноя 2013 17:25
RomanS
---
При таком создании объекта, получится то же самое, что и в случае, когда мы в массив объектов базового типа добавляем объекты наследников. В таком объекте будут доступны только те методы, которые объявлены в базовом классе, но при вызове виртуального метода, который был переопределен в наследнике, будет вызываться переопределенный метод

RomanS 18 ноя 2013 15:20
Подскажите пожалуйста, в чем смысл создания объекта таким образом:
class BaseClass
{
}
class DerivedClass : BaseClass
{
}
class Program
{
BaseClass obj = new DerivedClass();
}

Заранее спасибо.

Максим 11 ноя 2013 17:57
biglapa
---
Да, это такая "разминка" перед началом работы с классами

biglapa 10 ноя 2013 11:53
Примерно так?

{
public class Dog
{
public int numlegs;
public bool tail;
public string name;
private string species;
}

class Program
{
static void Main(string[] args)
{
Dog sobaka = new Dog();
sobaka.numlegs = 4;
sobaka.tail = true;
sobaka.name = "barbos";
Console.Write("У собаки " + sobaka.numlegs + " ноги " + "и у нее ");
Console.WriteLine(sobaka.tail ? "есть хвост" : "нет хвоста");
Console.ReadKey();
}
}
}

Максим 28 окт 2013 18:38
Саша
---
хорошо, только слово номер пишется через 'u' - number)

Саша 28 окт 2013 15:22
namespace HyAll
{
class Car
{
private string serialnomber;
protected string nomber;
internal string mark;
public int cost;
}
class Program
{
static void Main(string[] args)
{
Car Car1 = new Car();
Car Car2 = new Car();
Car1.mark = "Audi8";
Car2.mark = "BMW";
Car1.cost = 110000;
Car2.cost = 125000;
Console.WriteLine(Car1.mark);
Console.WriteLine(Car1.cost+"$");
Console.WriteLine(Car2.mark);
Console.WriteLine(Car2.cost+"$");
Console.ReadKey();

}
}


}

Максим 25 окт 2013 01:30
Roman
---
Предпологается, что у вас есть класс Node - узел, тогда в нем создайте два поля:
public Node left;
public Node right;

Roman 24 окт 2013 20:48
Прошу помощи, нужно реализовать класс, но в виде деревьев бинарных, но как создать указатели на левые и правые узлы?

Максим 12 авг 2013 16:10
Сергей
---
да, было пропущено const)

Сергей 12 авг 2013 09:13
В строке

class Math
{
private double Pi = 3.14;
}

не пропущено ли слово const ?
Иначе если я пытаюсь вывести на экран число Pi он пишет:"Для нестатического поля, метода или свойства "ConsolePrilozhenie.Math.Pi" требуется ссылка на объект E:\Documents and Settings\....";

Иначе не совсем объясните пожалуйста, что за ссылку я должен указать ?

Максим 15 июл 2013 20:31
Илья
------
Читатели могут помочь привлечением новых посетителей. Самое простое это делиться статьями с помощью кнопок социальных сетей)

Илья 15 июл 2013 15:52
Было бы за, что спасибо!
Чем читатели могут помочь?) за исключением денег!

Максим 25 июн 2013 23:31
5+ за проект!Надеюсь будет развиваться.
------
Спасибо за добрый отзыв. А развитие во многом зависит от вас - читателей)

Илья 25 июн 2013 23:08
5+ за проект!Надеюсь будет развиваться.


Добавить комментарий:

Имя (обязат.)
E-mail (обязат., не публикуется)


Для вставки ваших программ пользуйтесь кнопкой "исходный код"
Вёрстка сайта с нуля

Уникальный Видеокурс!

"Научись верстать сайты и заработай на этом!"

Получить видеокурс

Подпишись на курс по программированию, и узнавай первым о новых уроках!

RSS подписка Страничка Вконтакте Мы в Twitter
Бесплатный курс по основам PHP
Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter
Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387
Наверх
Система Orphus