Class Date { private int year = 0; private int month = 0; private int day = 0; public void SetDate (int y, int m, int d) { year = y; month = m; day = d;

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



Advertisements
Похожие презентации
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Advertisements

Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Классы и объекты. Декларация классов Обычный класс class MyClass { // field, constructor, and // method declarations } Класс наследованный class MyClass.
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Saint Petersburg, 2011 Java Lecture Generics. Quiz ArrayList lst = new ArrayList(); Collection c = lst; lst.add("one"); lst.add(two"); lst.add(three");
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
Test 16 Вопрос 1. class Clazz { { System.out.println("non-static init"); } public static void main(String a[]) { System.out.println("main"); Clazz ob1.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Статический анализатор для языка ECMA Script 4 Власов В. А. Мат.-мех. Ф-т.
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Test 4 Вопрос 1. public class TestOutput { public static void main(String[] args) throws IOException { PrintStream out = new PrintStream( new BufferedOutputStream(
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Test 8 Вопрос 1. class Class1 { Class1(int i) { System.out.println("Class1(int)"); } public class Class2 extends Class1 { Class2(double d) { // 1 this((int)
Функциональный тип в C#. Делегаты. Делегаты Делегат это объект, который обозначает обращение к функции определенного объекта (если функция представляет.
Транксрипт:

class Date { private int year = 0; private int month = 0; private int day = 0; public void SetDate (int y, int m, int d) { year = y; month = m; day = d; } public string ToString() { return string.Format("{0:d4}.{1:d2}.{2:d2}", year, month, day); } 1 Данные + Методы Именование, селекторы/модификаторы Классы - 1

Date today = new Date(); today.SetDate (2011, 11, 1); Console.WriteLine( today.ToString() ); 2

using System; namespace LabWork { class Program { static void Main() { } Структура программы

Добавлен второй класс using System; namespace LabWork { class Time { //... } using System; namespace LabWork { class Program { static void Main() { Time t = new Time(); }

class Circle { private double x = 0.0; private double y = 0.0; private double r = 0.0; public void Set(double x, double y, double r) { this.x = x; this.y = y; this.r = r; } public double Square() { return Math.PI * r * r; } 5 Еще пример класса Circle c = new Circle(); c.Set (1.0, 2.3, 2.0); double square = c.Square();

Значения по умолчанию для полей классов числовые поля0 boolfalse stringnull char\0 ссылочные типыnull

Спецификаторы доступа данных и методов class Foo { private int x; public int y; private void f1() { } public void f2() { } } …. Foo f = new Foo(); int a = f.x; int b = f.y; f.f1(); f.f2();

Спецификаторы доступа класса public class Foo // Доступен из любой внешней сборки { } internal class Foo// Доступен внутри текущей сборки { } class Foo // internal { }

Перегрузка методов класса class DateTime { //.. данные..// public void Set(int year, int month, int day) { //... } public void Set(int year, int month, int day, int hour, int min, int sec) { //... }

10 Конструктор (constructor) class Point { private int x; private int y; public Point() { this.x = 0; this.y = 0; } public Point (int x, int y) { this.x = x; this.y = y; } Point p1 = new Point(); Point p2 = new Point(1, 2); Q: Когда конструктор предпочтительнее инициализатора?

11 class Point { private int x = 0; private int y = 0; public Point() : this(0,0) { } public Point(int x, int y) { this.x = x; this.y = y; } Взаимные вызовы конструкторов

12 class Point { private int x = 0; private int y = 0; public Point() : this(0,0) { } public Point(int x, int y) { this.x = x; this.y = y; } public Point(Point p) : this(p.x, p.y) { } Point p1 = new Point(1, 2); Point p2 = new Point(p1); Конструктор копирования

const int count = 5; Time[] array = new Time[count]; for(int i=0; i

Структуры Отличия от классов: 1.Передаются по значению (копируются). 2.Не могу содержать инициализаторов полей. 3.Не могут содержать конструктор по умолчанию. 4.Структуры не участвуют в наследовании, и не могут реализовывать интерфейсы. struct Point { private float x; private float y; } … Point onePoint; Point[] pointArray = new Point[10];

15 Статические методы Point p1 = new Point(21.28, 49.32); Point p2 = new Point(81.12, 37.93); double dist = p1.DistanceTo(p2); class Point { private double x = 0; private double y = 0; public Point(double x, double y) { this.x = x; this.y = y; } public double DistanceTo(Point pt) { return Math.Sqrt((pt.x-x) * (pt.x-x) + (pt.y-y) * (pt.y-y)); }

16 class Point { private double x = 0; private double y = 0; public double DistanceTo(Point pt) { return Math.Sqrt((pt.x-x) * (pt.x-x) + (pt.y-y) * (pt.y-y)); } public static double Distance(Point p1, Point p2) { return Math.Sqrt( (p2.x-p1.x) * (p2.x-p1.x) + (p2.y-p1.y) * (p2.y-p1.y) ); } Point p1 = new Point(21.28, 49.32); Point p2 = new Point(81.12, 37.93); double dist = Point.Distance(p1, p2);

17 int lastID = User.GetLastID(); Статические поля данных class User { private int id; private string name; private static int idCounter = 0; public User() { id = ++idCounter; } public static int GetLastID() { return idCounter; }

18 -вызывается автоматически -не может получать параметры -объявляется без модификатора доступа Статический конструктор class User { private int id; private string name; private static int idCounter; public User() { id = idCounter++; } static User() { idCounter = DBase.GetUserLastID(); }

19 static class Math { public static int Sqr(int x) { return x * x; } public static double Div(int a, int b) { return a / b; } class Program { static void Main() { int a = Math.Sqr(10); double b = Math.Div(1, 5); } Статический класс Актуален когда: 1.Все методы статические. 2.Создание объектов не нужно. Не может содержать instance- методов

Константы public const int millenium = 2000; // времени компиляции public readonly int currentYear; // времени выполнения Константы (времени компиляции): только примитивные типы, перечисления и строки. Инициализация при объявлении, только вычисленными значениями. Являются неявно-статическими полями класса. Неизменяемые поля (константы времени выполнения): объявляются только в теле класса, инициализируются в теле класса или в конструкторе. Могут инициализироваться выражением.

class Foo { public const float PI = 3.14f; } class Program { static void Main() { Console.WriteLine(Foo.PI); // Доступ к статическому полю напрямую } // через имя класса }

class Polynom { private readonly int size; private double[] array; public Polynom(int sz) { size = sz; array = new double[sz]; } class Program { static void Main() { Polynom poly = new Polynom(5); }

class Polynom { private readonly int size; private double[] array; public Polynom(int sz) { size = sz; array = new double[sz]; } public void Foo() { size = 1; }

class Student { private string name; private int age = 0; public void SetName(string name) { this.name = name; } public void SetAge(int age) { this.age = age; } public string GetName() { return name; } public int GetAge() { return age; } Свойства (properties)

class Student { private string name; private int age; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { if (value >= 0) age = value; }

Краткое объявление свойств class Student { public string Name { get; set; } public int Age { get; set; } }

class Student { public string Name { get; private set; } public int Age { get; private set; } }

Инициализация свойств при создании объекта Student s = new Student {Name = "Иванов И.И.", Age = 20};