Перейти к содержимому

Как объявить новый класс

  • автор:

#19 – Создание классов и объектов

#19 – Создание классов и объектов

За урок вы на практике изучите использование классов и объектов. Вы познакомитесь с C++ ООП, научитесь строить классы и объекты на их основе.

Видеоурок

Создание классов

Для создания класса необходимо прописать ключевое слово class и далее название для класса. Общепринято начинать названия классов с буквы в верхнем регистре, но если этого не сделать, то ошибки не будет.

В любом классе можно создавать поля (переменные), методы (функции), а также конструкторы.

Создав новый класс и поместив туда какую-либо информацию мы можем создавать на основе него новые объекты. Объекты будут иметь доступ ко всем характеристикам класса, которые отмечены модификатором public .

Существует три модификатора доступа:

  • public — данные будут видны повсюду, как в классе, так и вне его;
  • protected — данные будут видны только в классе, где они были созданы, а также в классах наследниках;
  • private — данные будут видны только в классе, где они были созданы.

Пример простого класса приведен ниже:

class Book < public: int pages; char name; float weight; void getInfoBook () < cout >;

На основе такого класса мы можем создать множество объектов. Каждый объект в данном случае будет представлять из себя конкретную книжку. Для каждого объекта мы можем указать уникальные данные: количество страниц, название книги и её вес.

Чтобы создать объект нам потребуется следующий код:

Book sherlock_holms; // Создание объекта sherlock_holms.getInfoBook(); // Вызов метода класса

Такой код можно прописать и в одной строке кода. Мы для наглядности разбили код в две строки.

Чтобы брать данные из класса через объект необходимо ставить точку и указывать имя переменной или функции, которую мы хотим взять.

Создание классов

#include #include using namespace std; class Building < private: int year; string type; public: void set_data(int y, string t) < year = y; type = t; >void get_info() < cout >; int main() < setlocale(LC_ALL, "RU"); Building school; //school.type = "Школа"; //school.year = 2000; school.set_data(2000, "Школа"); school.get_info(); Building house; //house.type = "Дом"; //house.year = 2010; house.set_data(2010, "Дом"); house.get_info(); return 0; >

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Создание класса или типа в Visual Studio

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Область применения этого формирования кода:

Что? Этот компонент позволяет немедленно создавать код для класса или типа.

Когда? Вы представляете новый класс или тип и автоматически правильно объявляете его.

Зачем? Вы можете объявить класс или тип перед их использованием, но эта функция позволяет создать класс или тип автоматически.

Практические советы

  1. Поместите курсор в строку с красной волнистой линией. Она указывает несуществующий класс.
    • C#: Highlighted code C#
    • Visual Basic: Highlighted code VB
  2. Затем выполните одно из следующих действий.
    • Клавиатура
      • Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг.
    • Мышь
      • Щелкните правой кнопкой мыши и выберите меню Быстрые действия и рефакторинг.
      • Наведите указатель мыши на красную волнистую линию и щелкните появившийся значок error light bulb.
      • Щелкните появившийся значок error light bulb, который отображается в левом поле, если текстовый курсор уже находится в строке выбора с красной волнистой линией.

Generate class preview

  • Создание класса TypeName в новом файле— создает класс TypeName в файле с именемTypeName.cs/.vb.
  • Создание класса TypeName— создает класс с именем TypeName в текущем файле.
  • Создайте вложенный класс TypeName— создает класс с именем TypeName, вложенный в текущий класс.
  • Создание нового типа. — создает новый класс или структуру со всеми заданными свойствами.

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

Generate type

При выборе элемента Сформировать новый тип открывается диалоговое окно Сформировать тип. Настройте доступность, вид и расположение нового типа.

Выбор Description
Открыть Задайте для этого типа доступ По умолчанию, Внутренний или Открытый.
Вид Для этого параметра можно выбрать значения class или struct.
Имя Это имя нельзя изменить. Будет использоваться имя, которое вы уже ввели.
Проект Если решение содержит несколько проектов, вы можете выбрать проект, в котором будут находиться класс или структура.
Имя файла Можно создать новый файл или добавить тип в существующий.

Создается класс или структура. Для C# также создается конструктор.

  • C# Generate class result C#
  • Visual Basic Generate class result VB

См. также

  • Создание кода
  • Просмотр изменений

Классы, структуры и пространства имен

C# является полноценным объектно-ориентированным языком. Это значит, что программу на C# можно представить в виде взаимосвязанных взаимодействующих между собой объектов.

Описанием объекта является класс , а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке, у которого есть имя, возраст, какие-то другие характеристики. То есть некоторый шаблон — этот шаблон можно назвать классом. Конкретное воплощение этого шаблона может отличаться, например, одни люди имеют одно имя, другие — другое имя. И реально существующий человек (фактически экземпляр данного класса) будет представлять объект этого класса.

В принципе ранее уже использовались классы. Например, тип string , который представляет строку, фактически является классом. Или, например, класс Console , у которого метод WriteLine() выводит на консоль некоторую информацию. Теперь же посмотрим, как мы можем определять свои собственные классы.

По сути класс представляет новый тип, который определяется пользователем. Класс определяется с помощью ключевого слова сlass :

class название_класса < // содержимое класса >

После слова class идет имя класса и далее в фигурных скобках идет собственно содержимое класса. Например, определим в файле Program.cs класс Person, который будет представлять человека:

class Person

Классы и объекты в языке программирования C# и .NET

Начиная с версии C# 12, если класс имеет пустое определение, то фигурные скобки после названия типа можно не использовать:

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($"Имя: Возраст: "); > >

создание классов в языке программирования C# и .NET

Для создания объекта 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 в языке программирования C#

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

Добавление класса в Visual Studio в C#

В появившемся контекстном меню выберем пункт Add -> New Item. (или Add -> Class. )

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

Добавление нового класса в Visual Studio в C#

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

Таким образом, мы можем определять классы в отдельных файлах и использовать их в программе.

Классы и объекты

Класс в Java — это шаблон для создания объекта, а объект — это экземпляр класса. Класс определяет структуру и поведение, которые будут совместно использоваться набором объектов. Класс содержит переменные и методы, которые называются элементами класса, членами класса. Он составляет основу инкапсуляции в Java. Каждый объект данного класса содержит структуру и поведение, которые определены классом. Иногда объекты называют экземплярами класса.

Методы используются для описания того, что объект класса умеет делать или что можно с ним сделать. Переменные — для описания свойств или характеристик объекта.

Рассмотрим картинку, приведенную ниже. Объявлен класс Student , у которого есть переменные name и rollNo , а также методы setName() и setRollNo() для установки этих значений. На основе этого класса создано несколько объектов: Jenna, John, Maria, James. У каждого объекта, то есть студента, есть name и rollNo , но они разные.

Классы и объекты фото

2. Как создать класс в Java

Рассмотрим как создать класс в языке Java. Упрощенная общая форма определения класса:

class ИмяКласса < тип переменнаяЭкземпляра1; тип переменнаяЭкземпляра2; // . тип переменнаяЭкземпляраN; тип имяМетода 1 ( список параметров) < // тело метода >тип имяМетода2 (список параметров) < // тело метода >… тип имяМетодаN (список параметров ) < // тело метода >> 

После ключевого слова class пишется имя класса. В теле класса объявляются переменные и методы класса. Их может быть сколько угодно.

Опишем класс для объекта Box (коробка). У коробки есть три главные характеристики: ширина, высота и глубина, описанные с помощью переменных:

public class Box

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

Объявление класса создает только шаблон, но не конкретный объект. Чтобы создать объект класса Вох в Java, нужно воспользоваться оператором наподобие следующего:

Вох myBox = new Вох();

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

Создание объектов класса представляет собой двух этапный процесс:

    Объявление переменной типа класса. Эта переменная не определяет объект. Она является лишь переменной, которая может ссылаться на объект:

Вох myBox;​
myBox = new Вох();​

Объявление объектов фото

После объявления объекта класса Box , всем переменным класса присваивается значение по умолчанию для заданного типа. Для того чтобы обратиться к переменной класса и изменить ее или получить значение, используется имя переменной объекта:

public class BoxDemo1 < public static void main(String[] args) < Box myBox = new Box(); // присвоить значение переменным экземпляра mybox myBox.width = 10; myBox.height = 20; myBox.depth = 15; // рассчитать объем параллелепипеда double volume = myBox.width * myBox.height * myBox.depth; System.out.println("Объем равен " + volume); >> 

В следующем примере объявляется два объекта класса Box и каждому устанавливаются свои значения. Изменения в переменных экземпляре одного объекта не влияют на переменные экземпляра другого.

public class BoxDemo7 < public static void main(String[] args) < Box myBox1 = new Box(); Box myBox2 = new Box(); double volume; // присвоить значения переменным экземпляра myBox1 myBox1.width = 10; myBox1.height = 20; myBox1.depth = 15; //присвоить другие значения переменным экземпляра myBox2 myBox2.width = 3; myBox2.height = 6; myBox2.depth = 9; // рассчитать объем первого параллелепипеда volume = myBox1.width * myBox1.height * myBox1.depth; System.out.println("Объем равен " + volume); // рассчитать объем второго параллелепипеда volume = myBox2.width * myBox2.height * myBox2.depth; System.out.println(" Объем равен " + volume); >>

4. Присваивание переменным ссылок на объекты

Возможна ситуация, когда две переменные указывают на один и тот же объект в памяти:

Присваивание переменным ссылок на объекты фото

Рассмотрим как это происходит на следующем примере.

При объявлении переменной b1 создается новый объект в памяти. При объявлении переменной b2 , вместо создания нового объекта, переменной присваивается ссылка на объект b1 . Далее объекту, на который указывает переменная b1 , присваиваются значения 10, 20, 30. А ширине объекта, на который указывает переменная b2 , присваивается значение 3:

public class BoxDemo6 < public static void main(String[] args) < Box1 b1 = new Box1(); Box1 b2 = b1; b1.width = 10; b1.height = 20; b1.depth = 15; b2.width = 3; System.out.println("Width: " + b1.width); System.out.println("Width: " + b2.width); >>

Но обе переменные указывают на один и тот же объект, поэтому результат выполнения этой программы будет:

Width: 3.0 Width: 3.0

5. Добавляем методы в класс

Кроме переменных класс может содержать методы. В следующем примере в класс Box добавляется два метода: getVolume() — для вычисления объема коробки и setDim() — для установки размера коробки. Обратите внимание, что теперь мы объявляем методы нестатические (без ключевого слова static). В обоих методах мы имеем доступ к переменным класса.

public class Box < double width; double height; double depth; /** * Подсчитать объем коробки * * @return Объем */ double getVolume() < return width * height * depth; >/** * Установить размер коробки * * @param w - ширина * @param h - высота * @param d - глубина */ void setDim(double w, double h, double d) < width = w; height = h; depth = d; >>

В следующей программе создаются два объекта класса Box и вместо инициализации каждой переменной класса, как мы делали ранее, вызывается метод setDim() , куда передаются необходимые значения для ширины, высоты и глубины. Таким образом программа становится более компактной. Нестатический метод класса всегда вызывается для какого-то объекта. Аналогично, для подсчета объема коробки вызываем метод getVolume() для каждого объекта отдельно:

public class BoxDemo2 < public static void main(String[] args) < Box myBox1 = new Box(); Box myBox2 = new Box(); myBox1.setDim(10, 20, 15); myBox2.setDim(1, 5, 5); System.out.println("Объем: " + myBox1.getVolume()); System.out.println("Объем: " + myBox2.getVolume()); >>
  • Процедурное и объектно-ориентированное программирование
  • Принципы ООП
  • Конструктор
  • Ключевое слово this
  • Перегрузка
  • Стек и куча
  • Передача объектов в методы
  • Java varargs
  • Рекурсия
  • Сборщик мусора и метод finalize
  • Наследование
  • Ключевое слово super
  • Модификаторы доступа
  • Геттеры и сеттеры
  • Переопределение методов
  • Абстрактные классы и методы
  • Ключевое слово final
  • Задания

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *