Презентация Объектно-ориентированное программирование на C онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Объектно-ориентированное программирование на C абсолютно бесплатно. Урок-презентация на эту тему содержит всего 66 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » Объектно-ориентированное программирование на C



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    66 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    520.14 kB
  • Просмотров:
    71
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
Университет машиностроения
Содержание слайда: Университет машиностроения Кафедра «Автоматика и процессы управления»

№2 слайд
Содержание слайда:

№3 слайд
Содержание слайда:

№4 слайд
Содержание слайда:

№5 слайд
Содержание слайда:

№6 слайд
Содержание слайда:

№7 слайд
Содержание слайда:

№8 слайд
Содержание слайда:

№9 слайд
Содержание слайда:

№10 слайд
Содержание слайда:

№11 слайд
Содержание слайда:

№12 слайд
Содержание слайда:

№13 слайд
Содержание слайда:

№14 слайд
Содержание слайда:

№15 слайд
Содержание слайда:

№16 слайд
Содержание слайда:

№17 слайд
Содержание слайда:

№18 слайд
Содержание слайда:

№19 слайд
Содержание слайда:

№20 слайд
Присваивание и сравнение
Содержание слайда: Присваивание и сравнение объектов b = c Величины ссылочного типа равны, если они ссылаются на одни и те же данные (b == c, но a != b даже при равенстве их значений или если обе ссылки равны null).

№21 слайд
Данные поля и константы
Содержание слайда: Данные: поля и константы Данные, содержащиеся в классе, могут быть переменными или константами. Переменные, описанные в классе, называются полями класса. При описании полей можно указывать атрибуты и спецификаторы, задающие различные характеристики элементов: [ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное_значение ] public int a = 1; public static string s = "Demo"; double y; Все поля сначала автоматически инициализируются нулем соответствующего типа (например, полям типа int присваивается 0, а ссылкам на объекты — значение null). После этого полю присваивается значение, заданное при его явной инициализации.

№22 слайд
Пример класса using System
Содержание слайда: Пример класса using System; namespace CA1 { class Demo { public int a = 1; // поле данных public const double c = 1.66; // константа public static string s = "Demo"; // статическое поле класса double y; // закрытое поле данных } class Class1 { static void Main() { Demo x = new Demo(); // создание экземпляра класса Demo Console.WriteLine( x.a ); // x.a - обращение к полю класса Console.WriteLine( Demo.c ); // Demo.c - обращение к константе Console.WriteLine( Demo.s ); // обращение к статическому полю }}}

№23 слайд
Спецификаторы полей и
Содержание слайда: Спецификаторы полей и констант класса

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

№25 слайд
Синтаксис метода атрибуты
Содержание слайда: Синтаксис метода [ атрибуты ] [ спецификаторы ] тип имя_метода ( [ параметры ] ) тело_метода Спецификаторы: new, public, protected, internal, protected internal, private, static, virtual, sealed, override, abstract, extern. Метод класса имеет непосредственный доступ к его полям. Пример: class Demo { double y; // закрытое поле класса public void Sety( double z ) { // открытый метод класса y = z; } } … Demo x = new Demo(); // где-то в методе другого класса x.Sety(3.12); … // вызов метода

№26 слайд
Примеры методов public void
Содержание слайда: Примеры методов public void Sety(double z) { y = z; } public double Gety() { return y; }

№27 слайд
Параметры методов Параметры
Содержание слайда: Параметры методов Параметры определяют множество значений аргументов, которые можно передавать в метод. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу. Для каждого параметра должны задаваться его тип, имя и, возможно, вид параметра. Имя метода вкупе с количеством, типами и спецификаторами его параметров представляет собой сигнатуру метода — то, по чему один метод отличают от других. В классе не должно быть методов с одинаковыми сигнатурами. Метод, описанный со спецификатором static, должен обращаться только к статическим полям класса. Статический метод вызывается через имя класса, а обычный — через имя экземпляра.

№28 слайд
Пример class Demo public int
Содержание слайда: Пример class Demo { public int a = 1; public const double c = 1.66; static string s = "Demo"; double y; public double Gety() { return y; } // метод получения y public void Sety( double y_ ){ y = y_; } // метод установки y public static string Gets() { return s; } // метод получения s } class Class1 { static void Main() { Demo x = new Demo(); x.Sety(0.12); // вызов метода установки y Console.WriteLine(x.Gety()); // вызов метода получения y Console.WriteLine(Demo.Gets()); // вызов метода получения s // Console.WriteLine(Gets()); // вариант вызова из того же }} // класса

№29 слайд
Вызов метода Вычисляются
Содержание слайда: Вызов метода Вычисляются выражения, стоящие на месте аргументов. Выделяется память под параметры метода. Каждому из параметров сопоставляется соответствующий аргумент. При этом проверяется соответствие типов аргументов и параметров и при необходимости выполняется их преобразование. При несоответствии типов выдается диагностическое сообщение. Выполняется тело метода. Если метод возвращает значение, оно передается в точку вызова; если метод имеет тип void, управление передается на оператор, следующий после вызова.

№30 слайд
Примеры передачи аргументов в
Содержание слайда: Примеры передачи аргументов в метод class Class1 { static int Max(int a, int b) // метод выбора макс. значения { return a > b ? a : b; } static void Main() { int a = 2, b = 4; int x = Max( a, b ); // вызов метода Max Console.WriteLine( x ); // результат: 4 short t1 = 3, t2 = 4; int y = Max( t1, t2 ); // аргументы совместимого типа Console.WriteLine( y ); // результат: 4 int z = Max(a + t1, t1 / 2 * b); // аргументы-выражения Console.WriteLine( z ); // результат: 5 }}

№31 слайд
Способы передачи аргументов в
Содержание слайда: Способы передачи аргументов в метод При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. При передаче по ссылке (по адресу) метод получает копии адресов аргументов и осуществляет доступ к аргументам по этим адресам.

№32 слайд
Передача аргумента по значению
Содержание слайда: Передача аргумента по значению

№33 слайд
Передача аргумента по ссылке
Содержание слайда: Передача аргумента по ссылке (ref, out)

№34 слайд
Типы параметров В С четыре
Содержание слайда: Типы параметров В С# четыре типа параметров: параметры-значения - для исходных данных метода; параметры-ссылки (ref) - для изменения аргумента; выходные параметры (out) – для формирования аргумента; параметры-массивы (params) – для переменного кол-ва аргументов.

№35 слайд
Пример параметры-значения и
Содержание слайда: Пример: параметры-значения и ссылки ref using System; namespace ConsoleApplication1 { class Class1 { static void P( int a, ref int b ) { a = 44; b = 33; Console.WriteLine( "внутри метода {0} {1}", a, b ); } static void Main() { int a = 2, b = 4; Console.WriteLine( "до вызова {0} {1}", a, b ); P( a, ref b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

№36 слайд
Пример выходные параметры out
Содержание слайда: Пример: выходные параметры out using System; namespace ConsoleApplication1 { class Class1 { static void P( int x, out int y ) { x = 44; y = 33; Console.WriteLine( "внутри метода {0} {1}", x, y ); } static void Main() { int a = 2, b; // инициализация b не требуется P( a, out b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

№37 слайд
Summary Правила применения
Содержание слайда: Summary: Правила применения параметров Для параметров-значений используется передача по значению. Этот способ применяется для исходных данных метода. При вызове метода на месте параметра, передаваемого по значению, может находиться выражение (а также его частные случаи — переменная или константа). Должно существовать неявное преобразование типа выражения к типу параметра. Параметры-ссылки и выходные параметры передаются по адресу. Этот способ применяется для передачи побочных результатов метода. При вызове метода на месте параметра-ссылки ref может находиться только имя инициализированной переменной точно того же типа. Перед именем параметра указывается ключевое слово ref. При вызове метода на месте выходного параметра out может находиться только имя переменной точно того же типа. Ее инициализация не требуется. Перед именем параметра указывается ключевое слово out.

№38 слайд
Методы с переменным
Содержание слайда: Методы с переменным количеством аргументов class Class1 { public static double Average( params int[] a ) { if ( a.Length == 0 ) throw new Exception( "Недостаточно аргументов"); double sum = 0; foreach ( int elem in a ) sum += elem; return sum / a.Length; } static void Main() { try { int[] a = { 10, 20, 30 }; Console.WriteLine( Average( a ) ); // 1 int[] b = { -11, -4, 12, 14, 32, -1, 28 }; Console.WriteLine( Average( b ) ); // 2 short z = 1, e = 13; byte v = 100; Console.WriteLine( Average( z, e, v ) ); // 3 Console.WriteLine( Average() ); // 4 } catch( Exception e ) {Console.WriteLine( e.Message ); return; } }}

№39 слайд
Рекурсивные методы
Содержание слайда: Рекурсивные методы Рекурсивным называется метод, который вызывает сам себя (прямая рекурсия). Косвенная рекурсия - когда два или более метода вызывают друг друга. Для завершения вычислений каждый рекурсивный метод должен содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся оператором возврата. long fact( long n ) { if ( n == 0 || n == 1 ) return 1; // нерекурсивная ветвь return ( n * fact( n – 1 ) ); // рекурсивная ветвь } … long m=fact(4); // или: long fact( long n ) { return ( n > 1 ) ? n * fact( n – 1 ) : 1; }

№40 слайд
Характеристики рекурсии
Содержание слайда: Характеристики рекурсии Достоинство рекурсии: компактность записи. Недостатки: опасность переполнения стека; расход времени и памяти на повторные вызовы метода и передачу ему копий параметров.

№41 слайд
Ключевое слово this Чтобы
Содержание слайда: Ключевое слово this Чтобы обеспечить работу метода с полями того объекта, для которого он был вызван, в метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию объект.

№42 слайд
Использование явного this В
Содержание слайда: Использование явного this В явном виде параметр this применяется: 1) чтобы возвратить из метода ссылку на вызвавший объект: class Demo { double y; public Demo T() { return this; } // 2) для идентификации поля, если его имя совпадает с // именем параметра метода: public void Sety( double y ) { this.y = y; } }

№43 слайд
Конструкторы Конструктор
Содержание слайда: Конструкторы Конструктор предназначен для инициализации объекта. Он вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса. Свойства конструкторов: Конструктор не возвращает значение, даже типа void. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации. Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов — значение null. Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

№44 слайд
Пример класса с конструктором
Содержание слайда: Пример класса с конструктором class Demo { public Demo( int a, double y ) // конструктор { this.a = a; this.y = y; } int a; double y; } class Class1 { static void Main() { Demo a = new Demo( 300, 0.002 ); // вызов конструктора Demo b = new Demo( 1, 5.71 ); // вызов конструктора … } }

№45 слайд
Пример класса с двумя
Содержание слайда: Пример класса с двумя конструкторами class Demo { public Demo( int a ) // конструктор 1 { this.a = a; this.y = 0.002; } public Demo( double y ) // конструктор 2 { this.a = 1; this.y = y; } ... } ... Demo x = new Demo( 300 ); // вызов конструктора 1 Demo y = new Demo( 5.71 ); // вызов конструктора 2

№46 слайд
Сквозной пример класса class
Содержание слайда: Сквозной пример класса class Monster { public Monster() // конструктор { this.name = "Noname"; this.health = 100; this.ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health; this.ammo = ammo; } public string GetName() // метод { return name; } public int GetAmmo() // метод { return ammo;}

№47 слайд
Любой человек должен уметь
Содержание слайда: Любой человек должен уметь менять пеленки, планировать вторжения, резать свиней, конструировать здания, управлять кораблями, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, бросать навоз, программировать компьютеры, вкусно готовить, хорошо сражаться, достойно умирать. Специализация — удел насекомых. Любой человек должен уметь менять пеленки, планировать вторжения, резать свиней, конструировать здания, управлять кораблями, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, бросать навоз, программировать компьютеры, вкусно готовить, хорошо сражаться, достойно умирать. Специализация — удел насекомых. Роберт Хайнлайн

№48 слайд
Свойства Свойства служат для
Содержание слайда: Свойства Свойства служат для организации доступа к полям класса. Как правило, свойство определяет методы доступа к закрытому полю. Свойства обеспечивают разделение между внутренним состоянием объекта и его интерфейсом. Синтаксис свойства: [ спецификаторы ] тип имя_свойства { [ get код_доступа ] [ set код_доступа ] } При обращении к свойству автоматически вызываются указанные в нем блоки чтения (get) и установки (set). Может отсутствовать либо часть get, либо set, но не обе одновременно. Если отсутствует часть set, свойство доступно только для чтения (read-only), если отсутствует get - только для записи (write-only).

№49 слайд
Пример описания свойств
Содержание слайда: Пример описания свойств public class Button: Control { private string caption; // поле, с которым связано свойство public string Caption { // свойство get { return caption; } // способ получения свойства set // способ установки свойства { if (caption != value) { caption = value; } }} ...

№50 слайд
Сквозной пример класса class
Содержание слайда: Сквозной пример класса class Monster { public Monster() // конструктор { this.name = "Noname"; this.health = 100; this.ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health; this.ammo = ammo; } public string GetName() // метод { return name; } public int GetAmmo() // метод { return ammo;}

№51 слайд
Пример описания свойств
Содержание слайда: Пример описания свойств

№52 слайд
Перегрузка методов
Содержание слайда: Перегрузка методов Использование нескольких методов с одним и тем же именем, но различными типами параметров называется перегрузкой методов. Компилятор определяет, какой именно метод требуется вызвать, по типу фактических параметров. Это называется разрешением (resolution) перегрузки. // Возвращает наибольшее из двух целых: int max( int a, int b ) // Возвращает наибольшее из трех целых: int max( int a, int b, int c ) // Возвращает наибольшее из первого параметра // и длины второго: int max ( int a, string b ) ... Console.WriteLine( max( 1, 2 ) ); Console.WriteLine( max( 1, 2, 3 ) ); Console.WriteLine( max( 1, "2" ) ); Перегрузка методов является проявлением полиморфизма

№53 слайд
Сквозной пример класса class
Содержание слайда: Сквозной пример класса class Monster { public Monster() // конструктор { this.name = "Noname"; this.health = 100; this.ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health; this.ammo = ammo; } public string GetName() // метод { return name; } public int GetAmmo() // метод { return ammo;}

№54 слайд
Операции класса В С можно
Содержание слайда: Операции класса В С# можно переопределить для своих классов действие большинства операций. Это позволяет применять экземпляры объектов в составе выражений аналогично переменным стандартных типов: MyObject a, b, c; ... c = a + b; // операция сложения класса MyObject Определение собственных операций класса называют перегрузкой операций. Операции класса описываются с помощью методов специального вида (функций-операций): public static имя_класса operator операция( параметры) {… } Пример: public static MyObject operator --( MyObject m ) { … } В C# три вида операций класса: унарные, бинарные и операции преобразования типа.

№55 слайд
Общие правила описания
Содержание слайда: Общие правила описания операций класса операция должна быть описана как открытый статический метод класса (спецификаторы public static); параметры в операцию должны передаваться по значению (то есть не должны предваряться ключевыми словами ref или out); сигнатуры всех операций класса должны различаться; типы, используемые в операции, должны иметь не меньшие права доступа, чем сама операция (то есть должны быть доступны при использовании операции).

№56 слайд
Унарные операции Можно
Содержание слайда: Унарные операции Можно определять: + - ! ~ ++ -- true false Примеры заголовков: public static int operator +( MyObject m ) // унарный плюс public static MyObject operator --( MyObject m ) // декремент class Monster { public static Monster operator ++(Monster m) { Monster temp = new Monster(); temp.health = m.health + 1; return temp; } … } … Monster vasia = new Monster(); ++vasia; vasia++; …

№57 слайд
Правила оформления унарной
Содержание слайда: Правила оформления унарной операции класса Параметр функции-операции должен иметь тип этого класса. Операция должна возвращать: для операций +, -, ! и ~ величину любого типа; для операций ++ и -- величину типа класса, для которого она определяется. Операции не должны изменять значение передаваемого им операнда. Операция, возвращающая величину типа класса, для которого она определяется, должна создать новый объект этого класса, выполнить с ним необходимые действия и передать его в качестве результата. Префиксный и постфиксный инкремент/декремент не различаются

№58 слайд
Бинарные операции Можно
Содержание слайда: Бинарные операции Можно определять: + - * / % & | ^ << >> == != > < >= <= Примеры заголовков бинарных операций: public static MyObject operator + ( MyObject m1, MyObject m2 ) public static bool operator == ( MyObject m1, MyObject m2 ) Хотя бы один параметр, передаваемый в операцию, должен иметь тип класса, для которого она определяется. Операция может возвращать величину любого типа. Чаще всего в классе определяют операции сравнения на равенство и неравенство для того, чтобы обеспечить сравнение объектов, а не их ссылок. Операции == и !=, > и <, >= и <= определяются только парами и обычно возвращают логическое значение.

№59 слайд
Пример бинарных операций
Содержание слайда: Пример бинарных операций класса class Monster { public static Monster operator +( Monster m, int k ) { Monster temp = new Monster(); temp.ammo = m.ammo + k; return temp; } public static Monster operator +( int k, Monster m ) { Monster temp = new Monster(); temp.ammo = m.ammo + k; return temp; } … } … Monster vasia = new Monster(); Monster masha = vasia + 10; Monster petya = 5 + masha; …

№60 слайд
Операции преобразования типа
Содержание слайда: Операции преобразования типа Обеспечивают возможность явного и неявного преобразования между пользовательскими типами данных. implicit operator тип ( параметр ) // неявное преобразование explicit operator тип ( параметр ) // явное преобразование Выполняют преобразование из типа параметра в тип, указанный в заголовке операции. Одним из этих типов должен быть класс, для которого определяется операция. Таким образом, операции выполняют преобразование либо типа класса к другому типу, либо наоборот. public static implicit operator int( Monster m ) { return m.health; } public static explicit operator Monster( int h ) { return new Monster( h, 100, "FromInt" ); } ... Monster Masha = new Monster( 200, 200, "Masha" ); int i = Masha; // неявное преобразование Masha = (Monster) 500; // явное преобразование

№61 слайд
Применение операций
Содержание слайда: Применение операций преобразования Неявное преобразование выполняется автоматически: при присваивании объекта переменной целевого типа; при использовании объекта в выражении, содержащем переменные целевого типа; при передаче объекта в метод на место параметра целевого типа; при явном приведении типа. Явное преобразование выполняется при использовании операции приведения типа.

№62 слайд
Summary
Содержание слайда: Summary

№63 слайд
Интерфейс класса При создании
Содержание слайда: Интерфейс класса При создании класса следует хорошо продумать его интерфейс — средства работы с классом, доступные использующим его программистам. Интерфейс хорошо спроектированного класса интуитивно ясен, непротиворечив и обозрим. Как правило, он не должен включать поля данных. В идеале интерфейс должен быть полным (предоставлять возможность выполнять любые разумные действия с классом) и минимально необходимым (без дублирования и пересечения возможностей методов).

№64 слайд
Состав класса Как правило,
Содержание слайда: Состав класса Как правило, класс как тип, определенный пользователем, должен содержать скрытые (private) поля и следующие функциональные элементы: конструкторы, определяющие, как инициализируются объекты класса; набор методов и свойств, реализующих характеристики класса; классы исключений, используемые для сообщений об ошибках путем генерации исключительных ситуаций. Классы, моделирующие математические или физические понятия, обычно также содержат набор операций, позволяющих копировать, присваивать, сравнивать объекты и производить с ними другие действия, требующиеся по сути класса.

№65 слайд
Элементы класса Методы
Содержание слайда: Элементы класса Методы определяют поведение класса. Каждый метод класса должен решать только одну задачу. Создание любого метода следует начинать с его интерфейса (заголовка). Необходимо четко представлять себе, какие параметры метод должен получать и какие результаты формировать. Входные параметры обычно перечисляют в начале списка параметров. Поля, характеризующие класс в целом, следует описывать как статические. Все литералы, связанные с классом, описываются как поля-константы с именами, отражающими их смысл. Необходимо стремиться к максимальному сокращению области действия каждой переменной. Это упрощает отладку программы, поскольку ограничивает область поиска ошибки.

№66 слайд
Содержание слайда:

Скачать все slide презентации Объектно-ориентированное программирование на C одним архивом: