Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭКЗАМЕН_ИНФА

.pdf
Скачиваний:
5
Добавлен:
25.10.2024
Размер:
2.74 Mб
Скачать

проектирование программного обеспечения. Одними из ключевых концепций ООП в C# являются инкапсуляция и свойства.

Инкапсуляция:

Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего состояния объекта от прямого доступа извне. Это достигается с помощью спецификаторов доступа, таких

как private, protected и public. Инкапсуляция позволяет разработчикам скрывать детали реализации и предоставлять к ним доступ только через определенные методы, что улучшает безопасность и упрощает поддержку кода.

Пример инкапсуляции:

class Account

{

private decimal balance; // Скрытое поле

public decimal GetBalance()

{

// Проверка прав доступа return balance;

}

public void SetBalance(decimal value)

{

// Валидация значения balance = value;

}

}

Свойства:

Свойства в C# — это специальный синтаксис, который позволяет управлять доступом к полям класса. Свойства могут иметь блоки get и set, которые определяют, как можно получить или

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

class Person

{

private string name;

public string Name

{

get { return name; } set

{

if (value != null) name = value;

}

}

}

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

63. Объектно-ориентированный язык С#. Модель ООП.

Полиморфизм. Перегрузка методов. Перегрузка операций.

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

Полиморфизм:

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

Пример полиморфизма:

class Shape

{

public virtual void Draw()

{

Console.WriteLine("Drawing a shape");

}

}

class Circle : Shape

{

public override void Draw()

{

Console.WriteLine("Drawing a circle");

}

}

class Square : Shape

{

public override void Draw()

{

Console.WriteLine("Drawing a square");

}

}

Перегрузка методов:

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

Пример перегрузки методов:

class Calculator

{

public int Add(int a, int b)

{

return a + b;

}

public int Add(int a, int b, int c)

{

return a + b + c;

}

}

Перегрузка операций:

Перегрузка операций в C# дает возможность изменять стандартное поведение операторов для пользовательских типов. Это позволяет классам вести себя естественно с использованием стандартных операторов, таких как +, -, *, и /.

Пример перегрузки операций:

class Point

{

public int X { get; set; } public int Y { get; set; }

public static Point operator +(Point a, Point b)

{

return new Point { X = a.X + b.X, Y = a.Y + b.Y };

}

}

Использование полиморфизма, перегрузки методов и операций в C# способствует созданию кода, который легко читается, поддерживается и расширяется, обеспечивая при этом высокую степень повторного использования и гибкости. Эти концепции являются важной частью ООП и помогают разработчикам строить мощные и эффективные программные решения.

64. Объектно-ориентированный язык С#. Модель ООП.

Наследование. Спецификаторы доступа. Сокрытие имен.

Ограничения.

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

Модель ООП:

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

Наследование:

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

Пример наследования:

class BaseClass

{

public int baseValue;

}

class DerivedClass : BaseClass

{

public int derivedValue;

}

Спецификаторы доступа:

Спецификаторы доступа определяют уровень доступа к классам, методам и другим членам класса. В C# существуют следующие спецификаторы доступа: public, private, protected, internal, protected internal и private protected.

Сокрытие имен:

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

Пример сокрытия имен:

class MyClass

{

private int hiddenValue; // Скрытое поле

public int GetValue()

{

return hiddenValue;

}

public void SetValue(int value)

{

hiddenValue = value;

}

}

Ограничения:

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

Пример ограничения:

class MyGenericClass<T> where T : new()

{

public T instance = new T();

}

В этом примере T должен иметь конструктор по умолчанию. Использование этих концепций в C# позволяет разработчикам создавать структурированный и эффективный код, который легко адаптировать и расширять, поддерживая при этом принципы ООП. Это способствует созданию надёжных и масштабируемых приложений.

65. Объектно-ориентированный язык С#. Абстрактные классы. Виртуальные методы.

Абстрактные классы и виртуальные методы являются ключевыми концепциями объектно-ориентированного программирования в C#,

которые позволяют создавать гибкие и масштабируемые приложения.

Абстрактные классы:

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

Пример абстрактного класса:

abstract class Animal

{

public abstract void Speak();

}

В этом примере Animal — абстрактный класс с абстрактным методом Speak, который должен быть реализован в производных классах.

Виртуальные методы:

Виртуальные методы в C# — это методы, которые можно переопределять в производных классах. Они позволяют производным классам изменять или расширять базовую реализацию метода. Виртуальные методы обеспечивают полиморфизм времени выполнения, что является одной из основных концепций ООП.

Пример виртуального метода:

class Animal

{

public virtual void Speak()

{

Console.WriteLine("Animal speaks");

}

}

В этом примере метод Speak является виртуальным, и его можно переопределить в производном классе, например:

class Dog : Animal

{

public override void Speak()

{

Console.WriteLine("Dog barks");

}

}

Применение абстрактных классов и виртуальных методов:

Абстрактные классы и виртуальные методы используются для создания иерархии классов, где базовый класс определяет шаблон, а производные классы реализуют или расширяют этот шаблон. Это позволяет разработчикам писать более универсальный и масштабируемый код, который легко поддерживать и обновлять.

Вот пример программы, демонстрирующей использование абстрактных классов и виртуальных методов:

using System;

abstract class Animal

{

public abstract void Speak();

}

class Dog : Animal

{

public override void Speak()

{

Console.WriteLine("Dog barks");

}

}

class Cat : Animal

{

public override void Speak()

{

Console.WriteLine("Cat meows");

}

}

class Program

{

static void Main()

{

Animal myDog = new Dog();

Animal myCat = new Cat();

myDog.Speak(); // Вывод: Dog barks myCat.Speak(); // Вывод: Cat meows

}

}

В этом примере Animal является абстрактным классом с абстрактным методом Speak. Классы Dog и Cat наследуются от Animal и реализуют метод Speak. В методе Main создаются экземпляры Dog и Cat, и вызывается метод Speak, который демонстрирует полиморфное поведение.

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

66. Объектно-ориентированный язык С#. Упаковка, распаковка. Структура. Перечисления. Примеры программ.

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

Упаковка и распаковка:

Упаковка (boxing) и распаковка (unboxing) в C# — это процессы, которые позволяют преобразовывать типы значений в типы ссылок и обратно. Это необходимо для хранения типов значений в таких структурах данных, как коллекции, которые работают с объектами.

Упаковка — это процесс преобразования типа значения в тип объекта или любой другой тип интерфейса, реализованный этим

типом значения. Во время упаковки система создаёт новый объект в куче и копирует в него значение.

Пример упаковки:

int num = 123;

object obj = num; // Упаковка

Распаковка — это процесс преобразования типа объекта обратно в тип значения. Это действие требует явного приведения типа.

Пример распаковки:

object obj = 123;

int num = (int)obj; // Распаковка

Структуры:

Структуры в C# — это типы значений, которые могут содержать данные и методы. Они часто используются для группировки небольших объёмов связанных данных.

Пример структуры:

struct Point

{

public int X; public int Y;

}

Перечисления:

Перечисления (enum) — это набор именованных констант, которые упрощают работу с наборами связанных числовых значений. Они делают код более читаемым и поддерживаемым.

Пример перечисления:

enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

Примеры программ:

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

using System;

class Program