Объектно-ориентированное программирование» для студентов специальности 5В070300 «Информационные системы» идля оп 6В06120 «Информационные системы» Шымкент 2022



бет20/43
Дата28.03.2023
өлшемі1,44 Mb.
#76860
1   ...   16   17   18   19   20   21   22   23   ...   43
Байланысты:
ООП ЛЕКЦИОННЫЙ КОМПЛЕКС 2022рус (1)

Контрольные вопросы:
1. Описать методы и подходы машинного обучения
2. Опишите виды тестирования программного обеспечения.
3. Опишите уровни требований к программным продуктам
4. Описать основные принципы разработки программного продукта.
5. Опишите уровни требований к программным продуктам.
Лекция 12.Наследование. Полиморфизм. Интерфейс. Работа с меню.


Цель лекции: формирование у студентов умений демонстрировать свои представления о Наследование. Полиморфизм. Интерфейс. Работа с меню.
В результате освоения данной лекции студенты приобретают следующие способности:
Показать понимание наследование. Полиморфизм. Интерфейс. Работа с меню;
В первой лекции мы упомянули, что C# — это объектно-ориентированный язык программирования и что все операции (программные коды) должны быть написаны в методе Main класса Program.
Класс — это новый тип, который объединяет данные и их методы в единую структуру.
Данные класса могут иметь константы и переменные класса. Когда вы объявляете данные в классе, вы обычно указываете спецификаторы доступа, такие как private int a;.
Общий формат объявления данных класса:
[ спецификаторы ] [ const ] тип названия
[= начальное значение].
Данные включают в себя константы класса и поля класса для хранения неизменяемых значений (типы и имена переменных класса).
Если данным предшествует общедоступный спецификатор, то они доступны «программе», мы всегда используем общедоступный спецификатор.
В технологии объектно-ориентированного программирования данные класса обычно «закрыты для программы» — используется спецификатор private, а спецификатор private обычно используется для данных и методов.
Методы класса — это именованные фрагменты кода, которые используются для работы с этим классом.
Методы определяют набор действий, которые можно использовать в классе (они определяют порядок класса).
Метод определяется один раз и может вызываться столько раз, сколько необходимо для разных данных.
Общий формат записи методов класса следующий:
[ спецификаторы ] тип метода имя метода( [ параметры ] )
{метод}
Например:
static void Main(string[] args)
{ }
Наиболее распространенными спецификаторами являются private, public и static.
Любые методы класса, объявленные с помощью спецификатора private, доступны только для методов этого класса.
Спецификатор public делает метод доступным в любом месте программы.
Статический спецификатор описывает, что метод может быть вызван на «уровне класса» без создания экземпляра объекта класса. Это очень важно, потому что в этой дисциплине мы часто используем статические методы.
Тип метода может быть любым программно-определяемым типом или стандартным типом C#, или недействительным - бестиповым. Например:
int kol(int a) { … }
public double sym(out float r) { … }
public void poisk(ref float s) { … }
public int funkcij(int a,out int b,params int[] c){ … }
Если указан тип метода (отличный от void), то тело метода должно иметь оператор return в качестве последнего оператора, возвращающего результат операции метода. Кроме того, метод должен быть присвоен переменной или использоваться как выражение в операторах C#. Обычно такие методы называются функциями.
Если перед методом написан тип void, то метод не должен возвращать свою работу через оператор возврата (в этом случае оператора возврата не будет в теле метода). Обычно этот метод называется процедурой, его необходимо присвоить переменной, либо его можно записать в виде отдельной подпрограммы - процедуры (имя метода с параметрами в скобках).
Имя метода — это определяемый программистом идентификатор. Имя метода должно быть осмысленным, например, sym, max, poisk и т. д.
Параметры метода (формальные параметры) используются для обмена данными между программой и методом. Параметры метода обычно называют «настройщиками», которые выполняют желаемый алгоритм.
В C# методы имеют следующие параметры:
— параметры, определяющие значения (входные параметры, то есть полученные методом);
- выходные параметры (обозначаются функцией word out);
– эталонные параметры (обозначаемые функциональным словом ref);
– параметр массива (задается функциональным словом params).
В параметрах, определяющих значения, нет ключевого слова функции.
Параметры методов класса разделяются запятыми. Параметр массива в методе должен быть первым и последним в списке параметров.
Если метод объявляет параметры, определяющие значения, это указывает на то, что метод копирует некоторые переменные. Метод может изменить значение этих копий, но их оригинал (в программе) останется неизменным. После завершения работы метода параметры, определяющие значения, удаляются из памяти компьютера.
Выходные параметры метода предназначены для передачи результатов в программу. Выходным параметрам в теле метода необходимо присвоить некоторые значения, иначе при компиляции программы появится сообщение об ошибке.
Если в методе объявлены ссылочные параметры, то метод берет адрес соответствующих переменных и может использовать их по своему алгоритму (записывать и читать новые значения).
Параметр массива, объявленный в методе, предназначен для работы с любым количеством реальных переменных. Кроме того, формальный параметр, следующий за функцией params, будет сопоставляться с массивом данных любого размера.
Таким образом, метод может получать необходимые данные через свои параметры (параметры-значения и ссылочные параметры) или возвращать результаты своей работы (выходные параметры и ссылочные параметры).
Тело метода содержит фрагмент кода программы, выполняющий некоторый алгоритм. При этом метод используется как модель действий с формальными параметрами. В программе вместо формальных параметров должны использоваться реальные переменные - для реальных переменных используются реальные параметры и шаблон поведения метода.
Метод не может работать с формальными параметрами в программе.
Использование методов класса в программе.
Рассмотрим использование функции в программе на примерах решения различных задач.
Задача 7.1. В диалоговом режиме вводятся три целых числа. Найдите наибольшее число и вычтите его. Должна использоваться функция (метод) целочисленного типа.
Алгоритм решения проблемы состоит из следующих шагов:
– В диалоговом режиме нужно ввести три целых числа, например, a,b,c;.
- объявляем, что в первую переменную записано наибольшее число (переменной m присваивается значение a);
- сравниваем значение переменной m со значением переменной b, присваивая переменной m наибольшее значение;
- сравниваем значение переменной m со значением переменной c, присваивая переменной m наибольшее значение;
- выводим значение переменной m на экран монитора.
Давайте напишем процесс сравнения в виде следующей функции целочисленного типа:
static int maxc(int aa, int bb, int cc)
{
int mm;
mm = aa;
if (mm < bb) mm = bb;
if (mm < cc) mm = cc;
return mm;
}
Код программы:
using System;
namespace ConsoleApplication1
{
class Program
{
static int maxc(int aa, int bb, int cc)
{
int mm;
mm = aa;
if (mm < bb) mm = bb;
if (mm < cc) mm = cc;
return mm;
}
static void Main()
{
int a,b,c,m;
string buf;
Console.Write("a bytin canin engiziniz ");
buf = Console.ReadLine();
a = Convert.ToInt32(buf);
Console.Write("b bytin canin engiziniz ");
buf = Console.ReadLine();
b = Convert.ToInt32(buf);
Console.Write("c bytin canin engiziniz ");
buf = Console.ReadLine();
c = Convert.ToInt32(buf);
m = maxc(a,b,c);
Console.WriteLine("Algashki sandar: {0}, {1}, {2}", a, b, c);
Console.WriteLine("Maksimal san = {0}", m);
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Работа прогаммы:
a bytin canin engiziniz 21
b bytin canin engiziniz 34
c bytin canin engiziniz 17
Algashki sandar: 21, 34, 17
Maksimal san = 34
Методы перезагрузки
В C# можно определить несколько методов с одним и тем же именем, и они могут иметь разные наборы формальных параметров (или разные типы параметров). В C# такой подход называется перегрузкой методов. При вызове такого метода программа определяет соответствующий метод, анализируя количество, тип, порядок аргументов.
Давайте рассмотрим пример перегрузки метода:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static int funk(int x) { return x*x;}
public static double funk(double x) { return x+x; }
public static char funk(char x) { return x; }
static void Main(string[] args)
{
Console.WriteLine("x = 5 funk(5) = {0} ", funk(5));
Console.WriteLine("x = 5.5 funk(5.5) = {0} ", funk(5.5));
Console.WriteLine("x = 'g' funk('g') = {0} ", funk('g'));
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Работа программы:
x = 5 funk(5) = 25
x = 5.5 funk(5.5) = 11
x = 'g' funk('g') = g
Enter pernesin basiniz

В приведенном выше примере используется перегруженная функция func с различными типами аргументов. Но такие функции могут отличаться и количеством аргументов.


Перегрузка функций обычно используется для написания методов, которые «понимают» разные типы данных. Например, вы можете ввести текущую дату по-разному. Например:
Целыми числами (месяц, число, год - 23 12 07);
с текстом (23 декабря 2007 г.);
установить с помощью дополнительных символов (20.10.07 или 17.09.2007).
Чтобы программа правильно «понимала» эти данные, необходимо использовать перегрузку методов для каждого типа.




Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   ...   43




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет