SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
Спецкурс. Занятие 2

Абстракции, контракты,
соглашения
Принцип абстракции

Абстракция данных – скрываем
детали структуры
Абстракция алгоритмов –
скрываем вспомогательные
функции
Принцип абстракции

Основная цель – улучшить
понимание системы на
разных уровнях
Побочный эффект –
заменяемость
реализации
Принцип абстракции

Абстрактный тип данных
(АТД) – описание данных и
алгоритмов (функций) для
манипулирования ими
Принцип абстракции

Примеры АТД:
Список (List)
Стек (Stack)
Очередь (Queue)
Дек (Deq)
Ассоциативный массив (Map)
Принцип абстракции

Движение программистской
мысли:
Машинный код
«Понятный» машинный код
(ассемблер)
«Понятный» ассемблер (Си)
Структурное программирование
Принцип абстракции

Движение программистской
мысли:
Процедурное и функциональное
программирование
Абстрактные типы данных
Принцип абстракции

Движение программистской
мысли:
Объектно-ориентированное
программирование
Функциональное
программирование (новый
уровень)
Контракты

Контракт функции –
спецификация, предусловие,
постусловие и инвариант
Контракты

Спецификация функции –
наименование, входные и
выходные параметры,
выбрасываемые исключения
Контракты

Контракт:
один из способов реализации
абстракции
ООП (Java)

Класс один из способов реализации
абстрактного типа данных
Метод класса функция, имеющая доступ ко
всем данным класса
ООП (Java)

Спецификация метода – то
же, что и спецификация
функции + уровень доступа
ООП (Java)

Контракт класса –
наименование, структура
наследования, набор
спецификаций публичных
методов
ООП (Java)

Интерфейс –
чистое описание контракта класса
В Java НЕТ множественного
наследования, есть реализация
нескольких интерфейсов
ООП (Java)

Пакет –
совокупность классов, либо
совместно решающих общую
задачу, либо дающих разные
реализации одного контракта
ООП (Java)

Принцип Единственной
обязанности (Single Responsibility)
– у контракта должно быть ровно
одно четкое предназначение
Признак нарушения –
невозможность подобрать
простое наименование
ООП (Java)

Сущности:
interface IFullName {

interface IEmployee {

String getFirstName();
String getLastName();

IFullName getFullName();
String getAddress();
String getWorkPhone();
String getHomePhone();

}
}
ООП (Java)
public class FullName implements IFullName {

public String getLastName() {
return lastName;
}

private String firstName;
private String lastName;

public void setFirstName(
final String firstName
){
this.firstName = firstName;
}

public FullName(
final String firstName, final String lastName
){
this.firstName = firstName;
this.lastName = lastName;
}

public void setLastName(
final String lastName
){
this.lastName = lastName;
}

public String getFirstName() {
return firstName;
}
}
ООП (Java)
public class Employee implements IEmployee {

public IFullName getFullName() …
public String getAddress() …
public String getWorkPhone() …
public String getHomePhone() …
public void setFullName(final FullName name) …
public void setAddress(final String address) …
public void setWorkPhone(
final String workPhone
)…
public void setHomePhone(
final String homePhone
)…

private String address;
private String workPhone;
private String homePhone;
public Employee() {
}
public Employee (
final FullName name,
final String address,
final String workPhone,
final String homePhone,
){
…
}

}
ООП (Java)

Сервисы:
interface Program {
void InitializeCommandStack();
void PushCommand(Command command);
Command PopCommand();
void ShutdownCommandStack();
void InitializeReportFormatting();
void FormatReport(Report report);
void PrintReport(Report report);
void InitializeGlobalData();
void ShutdownGlobalData();
}
ООП (Java)

interface IEmployeeCensus extends IListContainer {
void addEmployee(IEmployee employee);
void removeEmployee(IEmployee employee);
IEmployee nextltem();
IEmployee getFirstltem();
IEmployee getLastltem();
}
ООП (Java)
interface IEmployeeCensus {
void addEmployee(IEmployee employee);
void removeEmployee(IEmployee employee);
IEmployee getNextEmployee();
IEmployee getFirstEmployee();
IEmployee getLastEmployee();
}
public class EmployeeCensus implements IEmployeeCensus {
private IListContainer m_EmployeeList;
…
}
Соглашения

Соглашения (конвенции)
именования – правила
наименования всех элементов
разрабатываемой системы
Соглашения

Уровни соглашений (по
возрастанию важности):
язык
фреймворк (библиотека)
компания (команда)
проект
Соглашения

Именование классов:
не использовать слова-связки
порядок: объект, имя
существительное – суть контракта,
дополнения и определения
Идеальный вариант – одно слово
Соглашения

Для сущностей:
Employee, List, WebContext
Для сервисов:
ReportManager, ContextHolder
Плохо:
AdderAndSubtracter, MyClass,
Program
Соглашения

Именование методов:
не использовать слова-связки,
порядок: глагол, объект
действия, дополнения и
определения
Соглашения

Именование переменных:
не использовать слова-связки,
объект, представляемый
переменной, возможно с
определением
Избегать: однобуквенных имен и
сильных сокращений слов
Соглашения

Разделение слов:
либо camelCase, либо символ
‘_’ - зависит от соглашений
языка
Соглашения

Классы в Java: CamelCase, с
большой буквы
Методы и переменные в Java:
camelCase, с маленькой буквы
Пакеты в Java: одно слово с
маленькой буквы, первые 2
уровня – развернутый домен
Соглашения

Форматирование кода –
правила записи операторов и
других конструкций языка,
расстановки пробельных
символов и скобок для
улучшения читабельности
Соглашения

Помните:
код пишется только 10%
времени, а 90% времени его
читают
Документирование

Документирование кода –
написание комментариев к
классам, методам,
определениям и другим
конструкциям
Документирование

JavaDoc – утилита для сборки
документации к проекту в
формате HTML
Иногда так называют сами
комментарии к классам и методам
Документирование

Пример для класса:
/**
* Provides a company employee
* entity
*/
class Employee {
Документирование

Пример для метода:
/**
* Counts employees in a given container
* @param employeeContainer a container of employees
* @return a count of employees in a given container
*/
int countEmployees(
final EmployeeContainer employeeContainer
){
Документирование

Самодокументирующийся код
– код, являющийся
документаций сам себе и не
требующий пояснений в виде
комментариев
Документирование

Хорошо документированный
код – контракты
документированы JavaDoc (или
аналогом), тела методов –
самодокументирующийся код

Más contenido relacionado

La actualidad más candente

Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
 
Coding Standards
Coding StandardsCoding Standards
Coding Standardsroadhump
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.Igor Shkulipa
 
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"Anatoly Levenchuk
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Dima Dzuba
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli typesmcroitor
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскалеDaria Romanova
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...Alexey Paznikov
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияAlexandr Grigorenko
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выраженияTatyanazaxarova
 

La actualidad más candente (18)

лек3 4
лек3 4лек3 4
лек3 4
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
 
Coding Standards
Coding StandardsCoding Standards
Coding Standards
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.
 
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
А.Власов. "Нижнеуровневая масштабируемая реализация ISO15926"
 
Scala lecture #4
Scala lecture #4Scala lecture #4
Scala lecture #4
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскале
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
 

Similar a Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2

Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...7bits
 
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.7bits
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программированияConstantin Kichinsky
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмыЕлена Ключева
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программированияguestfc8ae0
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and ClojureVasil Remeniuk
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...Sigma Software
 

Similar a Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2 (20)

Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения (...
 
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программирования
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
Net 3.0 & Linq
Net 3.0 & LinqNet 3.0 & Linq
Net 3.0 & Linq
 
Расширение библиотеки Slick
Расширение библиотеки SlickРасширение библиотеки Slick
Расширение библиотеки Slick
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...
Опыт применения активных объектов во встраиваемых системах. Архитектурные асп...
 

Más de 7bits

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? 7bits
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта7bits
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать7bits
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи 7bits
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE 7bits
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT7bits
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring7bits
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC7bits
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP7bits
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock7bits
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web7bits
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность7bits
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции7bits
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java7bits
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub7bits
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics7bits
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию7bits
 

Más de 7bits (20)

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 

Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2