Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
El documento describe los pasos metodológicos para realizar un estudio de riesgos naturales en un área, incluyendo la recopilación de eventos de riesgo natural previos, revisión de otros estudios, análisis crítico de propuestas existentes, zonificación de riesgos, diagnóstico de vulnerabilidad y propuestas de zonas de restricción y desarrollo condicionado. Además, presenta el marco legal pertinente a nivel constitucional, de medio ambiente, municipalidades, aguas, urbanismo,
Erika Tello Rivera presenta su plan de trabajo para 2009 como candidata a la presidencia del Centro Cultural CCAT. El plan propone fortalecer los puntos positivos del CCAT como las actividades académicas y culturales, y mejorar los puntos débiles como la coordinación entre departamentos y la transmisión del conocimiento. El plan incluye varias propuestas para cada coordinación con el objetivo de mejorar la formación de los estudiantes y el desempeño del CCAT.
Este documento contém 10 pequenas histórias ou crônicas sobre experiências de vida e reflexões da autora. As histórias abordam temas como comunicação, vizinhos, mudanças, lembranças do passado e distração. O estilo é descritivo e introspectivo.
Generics were added to the Java language more than 10 year ago. But do you really understand them?
We’ll discuss:
What is heap pollution?
How does the compiler translate generics?
Why it’s not allowed to create parametrized array (List<string>[])
What are bridge methods, can we reach them?
Type erasure rules
Difference between List, List<object>, List<?>
Why it’s not allowed to add Integer to List<?>
Why it’s not allowed to parameterize exception classes?
What’s wrong with Collections.max signature: <t><?>> T max(Collection<?> coll);
Code that should be compiled, but can’t be compiled and vice versa
How to write good API using generics and wildcards
And other generic puzzlers
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
El documento describe los pasos metodológicos para realizar un estudio de riesgos naturales en un área, incluyendo la recopilación de eventos de riesgo natural previos, revisión de otros estudios, análisis crítico de propuestas existentes, zonificación de riesgos, diagnóstico de vulnerabilidad y propuestas de zonas de restricción y desarrollo condicionado. Además, presenta el marco legal pertinente a nivel constitucional, de medio ambiente, municipalidades, aguas, urbanismo,
Erika Tello Rivera presenta su plan de trabajo para 2009 como candidata a la presidencia del Centro Cultural CCAT. El plan propone fortalecer los puntos positivos del CCAT como las actividades académicas y culturales, y mejorar los puntos débiles como la coordinación entre departamentos y la transmisión del conocimiento. El plan incluye varias propuestas para cada coordinación con el objetivo de mejorar la formación de los estudiantes y el desempeño del CCAT.
Este documento contém 10 pequenas histórias ou crônicas sobre experiências de vida e reflexões da autora. As histórias abordam temas como comunicação, vizinhos, mudanças, lembranças do passado e distração. O estilo é descritivo e introspectivo.
Generics were added to the Java language more than 10 year ago. But do you really understand them?
We’ll discuss:
What is heap pollution?
How does the compiler translate generics?
Why it’s not allowed to create parametrized array (List<string>[])
What are bridge methods, can we reach them?
Type erasure rules
Difference between List, List<object>, List<?>
Why it’s not allowed to add Integer to List<?>
Why it’s not allowed to parameterize exception classes?
What’s wrong with Collections.max signature: <t><?>> T max(Collection<?> coll);
Code that should be compiled, but can’t be compiled and vice versa
How to write good API using generics and wildcards
And other generic puzzlers
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 2-nd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Гуманитарные специальности в IT-индустрии
Анна Астахова, старший аккаунт-менеджер в компании Nоveо.
Noveo — международная IT‑компания. Наши главные офисы разработки ПО находятся в Новосибирске и Санкт-Петербурге, представительства — в Москве, Париже, Лондоне и Сиэтле.
2. Аннотации
Аннотации – набор мета-данных, который
может быть приложен к части программного
кода.
Аннотации могут применяться к:
1. Классам
2. Методам
3. Полям
4. Конструкторам
5. Другим аннотациям
Аннотации2
19. Java IO
Поток(stream) – это некоторая
абстракция, представляющая
последовательность данных. Input stream
используется для чтения данных, output
stream – для записи.
Java IO19
21. Java IO
Пример чтения/записи
public void processFile() {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(…);
out = new FileOutputStream(…);
int c;
while ((c = in.read()) != -1) {
out.write( c );
}
} catch(Exception e) {
//do something
}finally {
if (in!=null) in.close();
if (out!=null) out.close();
}
}
Java IO21
23. Java IO
Буферизация
Байтовые потоки
In = new FileInputStream(…);
Out = new FileOutputStream(…);
BufferedInputStream input = new BufferedInputStream(in);
BufferedOutputStream output = new
BufferedOutputStream(out);
Символьные потоки
r = new FileReader(…);
w = new FileWriter(…);
BufferedReader reader = new BufferedReader( r)
BufferedWriter writer = new BufferedWriter(w);
Java IO23
28. Generics
Обобщения (Generics) – механизм,
позволяющий параметризовать классы,
интерфейсы и отдельные методы и
улучшить возможности по проверке типов
на стадии компиляции.
Generics28
29. Generics
Пример
public class Box<T> {
private T value;
public T getValue() {
return value;
}
public setValue(T value) {
this.value = value;
}
}
Использование:
Box<String> box = new Box<String>();
Generics29
30. Generics
Ограничения типов
public class Box<T extends Number> {
private T value;
public T getValue() {
return value;
}
public setValue(T value) {
this.value = value;
}
}
Использование:
Box<Integer> intBox = new Box<Integer> (); //ok
Box<String> stringBox = new Box<String>(); //compilation error
Generics30
34. Generics
Wildcard. Ограничения
public void consumeBox(Box<? extends Number>
box) {
//можно использовать методы Number.
box.getValue().intValue();
}
public void consumeBox(Box<? super Integer> box)
{
}
Generics34
35. Generics
Стирание типов
• Все параметры без ограничений
стираются до Object;
• Все параметры с ограничением
стираются до типа-ограничения;
• Добавляются операторы приведения
типа, если это необходимо;
Generics35
36. Generics
Стирание типов. Пример.
До стирания
public class Box<T> {
private T value;
public T getValue() {
return value;
}
public setValue(T value) {
this.value =
value;
}
}
После
public class Box {
private Object value;
public Object getValue() {
return value;
}
public setValue(Object
value){
this.value = value;
}
}
Generics36
38. Практическое задание
https://github.com/noveogroup/university-android-
SecondJavaTask
1. Создать иерархию из трех классов вида «1 Родитель – 2
потомка»;
2. Реализовать бинарное дерево, которое сможет хранить
классы из иерархии п.1 (использовать generics) и только
их. Класс дерева должен поддерживать вставку,
удаление и итерирование элементов;
3. Реализовать собственную иерархию исключений для
бинарного дерева из п.2;
4. Реализовать сериализацию/десериализацию дерева из
файла. Кроме самого дерева, необходимо складывать в
файл количество листьев в нем (custom serialization).
Практика38