Методы классов. Методы класса [атрибуты][модификаторы] {void|тип_результата_функции} имя_метода ([список_формальных_аргументов]) { тело метода} Список.

Презентация:



Advertisements
Похожие презентации
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Advertisements

Универсальность. Классы с родовыми параметрами. Под универсальностью (genericity) понимается способность класса объявлять используемые им типы как параметры.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
В С# предусмотрены средства для создания пользовательских классов-контейнеров, к внутренним элементам которых можно обращаться при помощи того же оператора.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
CобытияCобытияСобытия События представляют собой механизм, посредством которого объект имеет возможность получать информацию о происходящем вне него. Объявление.
1 Переопределение операций Макаревич Л. Г.. 2 Зачем нужна перегрузка операций? class Complex { double re; double im; public: Complex(double r=0, double.
Массивы в С#. Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов.
Интерфейсы Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Методы интерфейса имеют модификаторы public и abstract,
Списки Лекция 10. Списки Список – структура данных, представляющая собой конечную последовательность элементов. Элемент списка: Данные Связь.
Индексаторы и операции классов. Лекция 5. Индексаторы. Если в классе есть скрытое поле, представляющее собой набор элементов, например, массив, то в нем.
Наследование Лекция 7. Основы наследования. Создание производных классов. Наследование является одной из основных особенностей объектно-ориентированного.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Обобщения ( шаблоны ) Лекция 5. Тип, метод или интерфейс параметризованный другим типом Обобщенный тип Тип ( класс, структура ), который параметризован.
Транксрипт:

Методы классов

Методы класса [атрибуты][модификаторы] {void|тип_результата_функции} имя_метода ([список_формальных_аргументов]) { тело метода} Список формальных аргументов разделяются на группы: входные, выходные - out обновляемые - ref [ref|out|params] тип_аргумента имя_аргумента

Перегрузка методов void A(out long p2, int p1) { p2 =(long) Math.Pow(p1,3); Console.WriteLine("Метод A-1"); } void A(out long p2, params int[] p) { p2=0; for(int i=0; i

Функции с побочным эффектом Функция называется функцией с побочным эффектом, если помимо результата, вычисляемого функцией и возвращаемого ей в операторе return, она имеет выходные аргументы с ключевыми словами ref и out. int f(ref int a) { return(a++); } public void TestSideEffect() { // тестирование int a = 0, b=0, c=0; a =1; b = a + f(ref a); a =1; c = f(ref a)+ a; Console.WriteLine("a={0}, b={1}, c={2}",a,b,c); }

Методы-свойства Стратегии доступа к полю: чтение, запись (Read, Write); чтение, запись при первом обращении (Read, Write- once); только чтение (Read-only); только запись (Write-only); ни чтения, ни записи (Not Read, Not Write).

public class Person { string fam="", status="", health=""; int age=0, salary=0; public string Fam {//Чтение, запись при первом обращении set {if (fam == "") fam = value;} get {return(fam);} } public string Status {//Только чтение get {return(status);} } public int Age { //Чтение, запись set { age = value; if(age < 7) status ="ребенок"; else if(age

Индексаторы ….. const int Child_Max = 10; //максимальное число детей Person[] children = new Person[Child_Max]; int count_children=0; //число детей public Person this[int i] {//индексатор get { if (i>=0 && i< count_children) return(children[i]); else return(children[0]); } set { if (i==count_children && i< Child_Max) { children[i] = value; count_children++; } public int Count_children { get {returm (count_children);} }

public void TestPersonChildren(){ Person pers1 = new Person(), pers2 = new Person(); pers1.Fam = "Петров"; pers1.Age = 42; pers1.Salary = 10000; pers1[pers1.Count_children] = pers2; pers2.Fam ="Петров"; pers2.Age = 21; pers2.Salary = 1000; Person pers3= new Person("Петрова"); pers1[pers1.Count_children] = pers3; pers3.Fam ="Петрова"; pers3.Age = 5; Console.WriteLine ("Фам={0}, возраст={1}, статус={2}", pers1.Fam, pers1.Age, pers1.Status); Console.WriteLine ("Сын={0}, возраст={1}, статус={2}", pers1[0].Fam, pers1[0].Age, pers1[0].Status); Console.WriteLine ("Дочь={0}, возраст={1}, статус={2}", pers1[1].Fam, pers1[1].Age, pers1[1].Status); }

Списочные структуры данных

Абстрактные классы public abstract class Stack{ public Stack() {} public abstract void put(int item); public abstract void remove(); public abstract int item(); public abstract bool IsEmpty(); }

Реализация стека на однонаправленном списке Узел списка public class Linkable{ public Linkable() { } public int info; public Linkable next; }

public class ListStack: Stack{ public ListStack() { top = new Linkable(); } Linkable top; public override void put(int item) {// втолкнуть элемент item в стек Linkable newitem = new Linkable(); newitem.info = item; newitem.next = top; top = newitem; } public override void remove() {// удалить элемент в вершине стека top = top.next; } public override int item() {// прочитать элемент в вершине стека return(top.info); } public override bool IsEmpty() {// определить, пуст ли стек return(top.next == null); } public void TestStack(){ ListStack stack = new ListStack(); stack.put(7); stack.put(9); Console.WriteLine(stack.item()); stack.remove(); Console.WriteLine(stack.item()); stack.put(11); stack.put(13); Console.WriteLine(stack.item()); stack.remove(); Console.WriteLine(stack.item()); if(!stack.IsEmpty()) stack.remove(); Console.WriteLine(stack.item()); }