Качество кода. Владимир Ярославский Инженер-программист. 11 декабря 2008 Sun Microsystems, Inc.

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Качество кода. Владимир Ярославский Инженер-программист. 11 декабря 2008 Sun Microsystems, Inc."

Транскрипт

1 Качество кода Владимир Ярославский Инженер-программист 11 декабря 2008 Sun Microsystems, Inc. 1

2 Что будем улучшать Производительность Читаемость Ясность Дизайн 2

3 Доступ к другому коду Классы: package Атрибуты: private Методы: private, package Методы: final Внутренние классы: static Излишние модификаторы в интерфейсах public interface Интерфейс { public static final String КОРЕНЬ = "root";... 3

4 Как давать имена Сущность Пример Пакеты org.netbeans.modules.sample Классы / Интерфейсы AddPropertyAction Методы findvariabledeclaration Константы PROPERTY_NAME Атрибуты класса Статические переменные mydisplayname ourmanager Переменные k, next, list Code Conventions for the Java 4

5 Избегайте замещения переменных public class Named { public Named() { name = "Имя"; public void showname() { String name = "Другое имя"; //... System.out.println("Name: " + name); // напечатает "Name: Другое имя" private String name; // заменить на myname 5

6 Import выражения Избегайте import javax.swing.*; Удаляйте неиспользованные импорты Убирайте ненужные импорты из одного пакета 6

7 Работа со строками: 1/2 Не используйте сложение String в циклах String numbers = new String(); for (int i=0; i < ; i++) { numbers += i; // 2000 секунд гораздо быстрее StringBuffer buffer = new StringBuffer(); for (int i=0; i < ; i++) { buffer.append(i); // 4 секунды String numbers = buffer.tostring(); 7

8 Работа со строками: 2/2 Два объекта вместо одного String s = new String("строка"); разумнее String s = "строка"; Используйте StringBuilder вместо StringBuffer > быстрее на 37% 8

9 Использование общего ресурса Общий ресурс Класс A Класс B 9

10 Общий ресурс: первое решение public synchronized Ресурс дайресурс() { if (общийресурс == null) { общийресурс = new Ресурс(); return общийресурс; private static Ресурс общийресурс; 10

11 Общий ресурс: второе решение public Ресурс дайресурс() { return ОБЩИЙ_РЕСУРС; private static final Ресурс ОБЩИЙ_РЕСУРС = new Ресурс(); 11

12 Общий ресурс: оптим. решение public class Класс { public Ресурс дайресурс() { return РесурсХранилище.ОБЩИЙ_РЕСУРС; private static class РесурсХранилище { static final Ресурс ОБЩИЙ_РЕСУРС = new Ресурс(); 12

13 Обработка исключений Не ловите просто Exception catch (Exception e) {... Не игнорируйте исключения try {... catch (IOException e) { /* пусто */ Не кидайте просто Exception public void method(...) throws Exception {... 13

14 Длина метода и размер класса Методы: не более строк Классы: не более строк 14

15 Аргументы, строки и прочее Длина строки не более символов Количество аргументов не более 5 7 Выделяйте сложный код в отдельный метод Используйте несинхронизированныe классы > ArrayList вместо Vector > StringBuilder вместо StringBuffer только, если работаете в одном потоке! 15

16 Освобождайте ресурсы Пример: класс Stack public Object pop() { if (mylast < 0) throw new IllegalArgumentException(); return myelements[mylast--]; правильнее public Object pop() { if (mylast < 0) throw new IllegalArgumentException(); Object value = myelements[mylast]; myelements[mylast--] = null; return value; 16

17 Булевские значения в условиях if (isstudent()) { return true; else { return false; короче return isstudent(); 17

18 Ссылки на объект Используйте интерфейсы вместо классов private ArrayList list = new ArrayList(); public void calculate(linkedlist list) {... public Vector construct() {... решение private List list = new ArrayList(); public void calculate(list list) {... public List construct() {... 18

19 Типизация в списках, множествах,... Вот такой код private List list = new ArrayList(); public int calculate(map map) {... public Set constructset() {... следует заменить на private List<String> list = new ArrayList<String>(); public int calculate(map<integer,string> map) {... public Set<Float> constructset() {... 19

20 while vs. for List<Студент> студенты = деканат.списокстудентов(); while (студенты.hasnext()) { Студент студент = студенты.next();... for (Студент студент : деканат.списокстудентов()) {... нагляднее 20

21 Создание новых объектов вариант с конструктором Boolean b = new Boolean(false); Integer i = new Integer(10); Long l = new Long( l); замените на константы или статические вызовы Boolean b = Boolean.FALSE; Integer i = Integer.valueOf(10); Long l = Long.valueOf( L); 21

22 Утилиты и предупреждения Утилитные классы public final class Utility { private Utility() {... Пишите чистый код > deprecation warnings > unchecked cast warnings 22

23 Константы в интерфейсах Данные должны жить в классах public interface Constants { String DISPLAY_NAME = "display-name"; String ROOT_FOLDER = "root-folder"; String TOOLTIP = "tooltip"; String ICON = "icon"; 23

24 Стиль написания и логика Пишите на новой строке с фигурными скобками if (name == null) return false; удобнее if (name == null) { return false; Не ставьте лишних скобок return (ref!= null) && (ref.get()!= null); return (booleanvalue)?... return (item == variable); if ((name == null) (name == null))... 24

25 Замена логики if (messagereference!= null) { Message message = messagereference.get(); if (message!= null) { Collection<Part> parts = message.getparts(); if (parts!= null &&!parts.isempty()) { лучше if (messagereference == null) { return null; Message message = messagereference.get(); if (message == null) { return null; Collection<Part> parts = message.getparts(); if (parts == null parts.isempty()) { return null;... 25

26 Неожиданный null Не возвращайте null, если ожидается list / map / array private List списокотличников() { if (файл == null) { return null; // рекомендуется вернуть // java.util.collections.empty_list... 26

27 if... else if... else if... fi Лишние ветви else if (должность == АССИСТЕНТ) { return new Ассистент(...); else if (должность == СТ_ПРЕПОДАВАТЕЛЬ) { return new СтПреподаватель(...); else if (должность == ДОЦЕНТ) { return new Доцент(...); else if (должность == ПРОФЕССОР) { return new Профессор(...); else { return null; 27

28 if... if... if... fi if (должность == АССИСТЕНТ) { return new Ассистент(...); if (должность == СТ_ПРЕПОДАВАТЕЛЬ) { return new СтПреподаватель(...); if (должность == ДОЦЕНТ) { return new Доцент(...); if (должность == ПРОФЕССОР) { return new Профессор(...); return null; 28

29 Дублирование кода Добавьте новый метод (с параметром) Добавьте новый (абстрактный) класс 29

30 Замена switch полиморфизмом: 1/3 public enum ТИП { СТУДЕНТ, АСПИРАНТ, ПРЕПОДАВАТЕЛЬ public class Сессия { public void напечататьрезультаты(персона персона) { System.out.println( Результаты текущей сессии ) ТИП тип = персона.дайтип(): switch (тип) { case СТУДЕНТ: // оценки за сданные экзамены и зачеты case АСПИРАНТ: // оценки за сданный кандидатский минимум case ПРЕПОДАВАТЕЛЬ: // оценки за принятые экзамены System.out.println( Составлен: + получитьтеквремя()); 30

31 Замена switch полиморфизмом: 2/3 abstract class Персона { public abstract void напечататьрезультатысессии(); class Студент extends Персона { public void напечататьрезультатысессии() { // оценки за сданные экзамены и зачеты class Аспирант extends Персона { public void напечататьрезультатысессии() { // оценки за сданный кандидатский минимум 31

32 Замена switch полиморфизмом: 3/3 class Преподаватель extends Персона { public void напечататьрезультатысессии() { // оценки за принятые экзамены public class Сессия { public void напечататьрезультаты(персона персона) { System.out.println( Результаты текущей сессии ) персона.напечататьрезультатысессии(); System.out.println( Составлен: + получитьтеквремя()); 32

33 Призовая игра 1. Раскройте скобки not(a v B & C) = Чему равно значение переменной d? double d = 7 / 2 * 3; 3. Чему равно значение переменной o? int o = ; 4. Ошибка компиляции или что будет напечатано? System.out.println( abc * 2); 5. Ошибка компиляции или что будет напечатано? System.out.println( ); 6. Ошибка компиляции или что будет напечатано? System.out.println( ); 33

34 Ответы 1. not(a v B & C) = not(a v (B & C)) = = not A & not(b & C) = = not A & (not B v not C) = = not A & not B v not A & not C 2. 7 / 2 * 3 = 3 * 3 = 9 Для вещественных чисел нужно так: 7.0 / 2.0 * 3.0 = 3.5 * 3.0 = = = 72 или Ошибка компиляции operator * cannot be applied to java.lang.string,int (сложение чисел) (сложение строк) 34

35 Вопросы? 35

36 Качество кода Владимир Ярославский 36

Паттерны проектирования

Паттерны проектирования Паттерны проектирования Введение Что такое «хороший дизайн» Точного универсального ответа на этот вопрос нет Есть стандартные решения для определенных задач паттерны Предложены хорошими специалистами Проверены

Подробнее

Теоретические вопросы

Теоретические вопросы МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040301 Прикладна математика Дисципліна «Програмування» Модульна контрольна робота

Подробнее

Ключевые слова языка С#

Ключевые слова языка С# 1 abstract, см. также 11, 55 2 as, см. также 37 Ключевые слова языка С# Модификатор abstract используется при объявлении класса, метода или свойства. Использование модификатора abstract в объявлении класса

Подробнее

Исключения являются удобным методом обработки ошибок, но в данном коде оно используется немного некорректно. Приведу несколько примеров:

Исключения являются удобным методом обработки ошибок, но в данном коде оно используется немного некорректно. Приведу несколько примеров: Цели: Использование исключений для указания ошибки в действиях Устранение обёрток в бинах Устранение пустых коллекций Использование исключений для указания ошибки в действиях Исходный код Исключения являются

Подробнее

Простейшая программа Hello, world!

Простейшая программа Hello, world! Простейшая программа Hello, world! // System.out.println("Привет, мир!"); Обязательные требования: 1) Имя файла, содержащего код программы, должно совпадать с именем класса 2) Файл должен иметь расширение.java

Подробнее

JAVA CANDIDATE CHECKLIST 1 / 8

JAVA CANDIDATE CHECKLIST 1 / 8 JAVA CANDIDATE CHECKLIST 1 / 8 SEVERAL QUESTIONS MAY IMPLY MORE THAN ONE CORRECT ANSWER I - ООP II - Java Fundamentals III - Java Collections IV - Java I/O V - XML VI - RDB concept VII - Networking # QUESTION

Подробнее

Code Conventions. (for the Java Programming Language)

Code Conventions. (for the Java Programming Language) Code Conventions (for the Java Programming Language) Зачем? 80% времени жизни ПО находится в поддержке Почти никогда ПО не поддерживается автором Соглашение об именовании улучшает читаемость кода, ускоряя

Подробнее

Обобщения. Основные понятия

Обобщения. Основные понятия Обобщения. Основные понятия Термин «обобщение», по существу, означает параметризированный тип. Особая роль параметризированных типов состоит в том, что они позволяют создавать классы, структуры, интерфейсы,

Подробнее

Классы, объекты и пакеты в Java

Классы, объекты и пакеты в Java Классы, объекты и пакеты в Java Алексей Владыкин 3 октября 2012 Алексей Владыкин Классы, объекты и пакеты в Java 3 октября 2012 1 / 42 1 Основы ООП 2 Объявление класса 3 Использование класса 4 Наследование

Подробнее

Классы, объекты и пакеты в Java

Классы, объекты и пакеты в Java Классы, объекты и пакеты в Java Алексей Владыкин 30 сентября 2013 Алексей Владыкин Классы, объекты и пакеты в Java 30 сентября 2013 1 / 35 1 Основы ООП 2 Классы 3 Наследование 4 Пакеты Алексей Владыкин

Подробнее

Вступительное слово и обзор Java технологии

Вступительное слово и обзор Java технологии Вступительное слово и обзор Java технологии Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Что такое Java? Язык программирования Платформа: Аппаратная Операционная: Windows,

Подробнее

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ»

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Тема 1. Введение в технологию Java Java как платформа, история создания. Среда разработки. Этапы создания

Подробнее

Управляющие конструкции и исключения в Java

Управляющие конструкции и исключения в Java Управляющие конструкции и исключения в Java Алексей Владыкин 7 октября 2013 Алексей Владыкин Управляющие конструкции 7 октября 2013 1 / 29 1 Условные операторы 2 Циклы 3 Исключения Алексей Владыкин Управляющие

Подробнее

Типы данных и управляющие структуры Java

Типы данных и управляющие структуры Java Типы данных и управляющие структуры Java Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://berkut.homelinux.com Что такое тип данных? Тип данных: Спектр значений Набор допустимых операций Программа

Подробнее

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19 Содержание Предисловие к Java SE 8 Edition 19 Глава 1 Введение 21 1.1. Организация книги 22 1.2. Примеры программ 25 1.3. Обозначения 26 1.4. Связь с предопределенными классами и интерфейсами 26 1.5. Литература

Подробнее

Абстрактные классы и методы

Абстрактные классы и методы Абстрактные классы и методы Абстрактные методы Абстрактные классы Расширение абстрактных классов Интерфейсы «Множественное наследование» в Java Вложенные интерфейсы Абстрактные классы и методы В ряде ситуаций

Подробнее

Программирование на языке Java

Программирование на языке Java Теория и технология программирования Программирование на языке Java Лекция 3. Проектирование классов в Java Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Общий базовый класс В языке Java

Подробнее

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10 ГЛАВА 10 Массивы В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически и могут присваиваться переменным типа Object ( 4.3.2). Все методы класса Object можно вызывать

Подробнее

Объектно-ориентированное программирование. Лекция 13

Объектно-ориентированное программирование. Лекция 13 Объектно-ориентированное программирование Лекция 13 Основные термины Предметная область это набор понятий, представляющих важные аспекты решаемой задачи Объект это конструкция программы, использующая термины

Подробнее

Объекты, классы и пакеты в Java

Объекты, классы и пакеты в Java Объекты, классы и пакеты в Java Алексей Владыкин 22 сентября 2014 Алексей Владыкин Объекты, классы и пакеты в Java 22 сентября 2014 1 / 37 1 Основы ООП 2 Пакеты 3 Классы 4 Наследование Алексей Владыкин

Подробнее

Руководство по стилю программирования

Руководство по стилю программирования Руководство по стилю программирования Версия 1.0 SantaFox developer Saint-Peterburg, 2008 Оглавление Введение... 3 Для кого это руководство... 3 О чём это руководство... 3 Отступы, длина строки и выравнивание...

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках Лекция 17. Стандарты и реализации Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные стандарты и реализации Язык

Подробнее

Обработка исключительных ситуаций

Обработка исключительных ситуаций Обработка исключительных ситуаций Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Что должно произойти при

Подробнее

ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN

ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN 2.2 А.Н.Фролов Московский государственный институт радиотехники, электроники и автоматики (технический университет)

Подробнее

ОБЗОР ОСОБЕННОСТЕЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ KOTLIN.

ОБЗОР ОСОБЕННОСТЕЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ KOTLIN. УДК 004.432 Колмакова Е.Н., студентка 3 курс, факультет «Информационные системы и технологии» Поволжский Государственный Университет Телекоммуникаций и Информатики Россия, г. Самара ОБЗОР ОСОБЕННОСТЕЙ

Подробнее

Ответы на вопросы экзамена по курсу «Языки программирования»

Ответы на вопросы экзамена по курсу «Языки программирования» ы на вопросы экзамена по курсу «Языки программирования» 09.01.2016 В ответах курсивом выделены необязательные пояснения, которые можно опустить (особенно на экзамене) Вариант 1 Задача 1-1 Объясните, что

Подробнее

«Наследование, перегрузка операторов, обработка исключений»

«Наследование, перегрузка операторов, обработка исключений» Лабораторная работа по теме «Наследование, перегрузка операторов, обработка исключений» 1) Исследуйте исходный код программы: 1.1 объясните, что такое интерфейс, что он может содержать и чем он отличается

Подробнее

Лабораторная работа 2. Ручное построение нисходящих синтаксических анализаторов

Лабораторная работа 2. Ручное построение нисходящих синтаксических анализаторов Лабораторная работа 2. Ручное построение нисходящих синтаксических анализаторов 26 апреля 2011 г. Введение Цель данной лабораторной работы научиться разрабатывать грамматики для заданных неформально языков

Подробнее

Введение в язык Java

Введение в язык Java Лекция 3 Введение в язык Java Простейшая программа на Java Простейшая программа на языке программирования Java выглядит примерно так: public class HelloWorld { public static void main(string args []) {

Подробнее

Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов

Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов Чашников Николай программист JetBrains Nikolay.Chashnikov@jetbrains.com Как возникает API class B class A Как возникает

Подробнее

Операторы в JAVA. Лекция 4

Операторы в JAVA. Лекция 4 Лекция 4 Операторы в JAVA Ввод информации с клавиатуры Проще всего вводить числа с клавиатуры, пользуясь классом Scanner. Этот класс принадлежит пакету java.util. Следовательно, чтобы использовать его

Подробнее

Основы платформы Microsoft.NET

Основы платформы Microsoft.NET Основы платформы Microsoft.NET Тема: Обработка ошибок Понятие исключения...1 Обработка исключений...2 Блок try...2 Блок catch...3 Блок finally...3 Пример обработки исключений...3 Обработка нескольких исключений...5

Подробнее

Обработка исключительных ситуаций

Обработка исключительных ситуаций Обработка исключительных ситуаций Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://berkut.mk.ua По материалам Андрея Дмитриева Что должно произойти при исполнении этой программы? class SimpleMistake

Подробнее

Функциональное программирование

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

Подробнее

Обработка ошибок, исключения, отладка

Обработка ошибок, исключения, отладка Обработка ошибок, исключения, отладка Алексей Владыкин 29 сентября 2014 Алексей Владыкин Ошибки, исключения, отладка 29 сентября 2014 1 / 25 1 Подходы к обработке ошибок 2 Исключения 3 Java Logging API

Подробнее

Перехват и обработка ошибок Принципы обработки исключений Вложенные try-catch блоки Использование объекта исключения Генерирование исключений

Перехват и обработка ошибок Принципы обработки исключений Вложенные try-catch блоки Использование объекта исключения Генерирование исключений Перехват и обработка ошибок Принципы обработки исключений Вложенные try- блоки Использование объекта исключения Генерирование исключений Контролируемые и неконтролируемые исключения Создание пользовательских

Подробнее

Встроенная документация Java

Встроенная документация Java Встроенная документация Java Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Документация Необходимость поддержки

Подробнее

Современные технологии программирования (часть 2)

Современные технологии программирования (часть 2) Гуляев Г.М. Современные технологии программирования (часть 2) Лекция 4. ООП на языке Scala Курс лекций для студентов АлтГТУ LOGO Классы В отличие от java декларация public не используется. Все классы в

Подробнее

времени выполнения) компилирует ее содержимое в машинный код

времени выполнения) компилирует ее содержимое в машинный код 1. Объектно-ориентированное программирование 1 1.1. Введение в.net и С# Microsoft.NET это платформа для разработки прикладных программ, основанная и ориентированная на Интернет..NET основывается на двух

Подробнее

Основы программирования на Java. Исключения

Основы программирования на Java. Исключения Основы программирования на Java Исключения Программа Классы и объекты в Java: основные сведения Управление памятью для ссылочных типов Реализация наследования в Java Пакеты как механизм реализации пространств

Подробнее

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам Шаблоны 2013 Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию)

Подробнее

Теория и технология программирования. Основы программирования на языке Java. Классы и объекты

Теория и технология программирования. Основы программирования на языке Java. Классы и объекты Теория и технология программирования Основы программирования на языке Java Классы и объекты 1 Программа Классы и объекты в Java: основные сведения Управление памятью для ссылочных типов Реализация наследования

Подробнее

Дополнительная образовательная программа по курсу «Программирование на языке Java»

Дополнительная образовательная программа по курсу «Программирование на языке Java» МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «Новосибирский национальный исследовательский государственный

Подробнее

Эффективное программирование на Java

Эффективное программирование на Java Эффективное программирование на Java Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Программа Методы генерации

Подробнее

Полиморфизм. Полиморфизм множественность форм. Полиморфизм возможность единообразной обработки данных.

Полиморфизм. Полиморфизм множественность форм. Полиморфизм возможность единообразной обработки данных. Полиморфизм Полиморфизм возможность использовать одно имя для решения нескольких схожих, но технически разных задач, или обращаться к объектам разного типа. Полиморфизм множественность форм. Полиморфизм

Подробнее

Вариант 2 #1. Вариант Что выведет программа? class Base { Base() { System.out.print("Base"); public class Alpha extends Base {

Вариант 2 #1. Вариант Что выведет программа? class Base { Base() { System.out.print(Base); public class Alpha extends Base { Вариант 2. 1. Что выведет программа? Вариант 2 #1 class Base { Base() { System.out.print("Base"); public class Alpha extends Base { new Alpha(); /* Line 12 */ new Base(); /* Line 13 */ a. Base b. BaseBase

Подробнее

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами:

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: (стандарт ISO/IEC 14882:2011 ) Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: ведение понятий лямбда-функций и выражений, внешние шаблоны, альтернативный синтаксис шаблонных

Подробнее

Знакомство со Scala. Четвертое занятие

Знакомство со Scala. Четвертое занятие Знакомство со Scala Четвертое занятие Параметризация типов Мощный инструмент для борьбы с дублированием кода Более «правильный» подход, чем в Java generics Параметрический полиморфизм высших порядков (ППВП):

Подробнее

Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция

Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция Проблемы множественного наследования классов. Интерфейсы Достаточно часто требуется совмещать в объекте поведение, характерное для

Подробнее

Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да,

Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да, Глава 3 Краткий обзор языка C# Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да, мы уже слышим ваши возражения: Но ведь просто невозможно сжать всю информацию о C# в одну главу!

Подробнее

1Сильные стороны. привлекательная внешность, мужественная осанка вот и все мое колдовство. Уильям Шекспир. Виндзорские насмешницы

1Сильные стороны. привлекательная внешность, мужественная осанка вот и все мое колдовство. Уильям Шекспир. Виндзорские насмешницы 1Сильные стороны привлекательная внешность, мужественная осанка вот и все мое колдовство. Уильям Шекспир. Виндзорские насмешницы В начале своей карьеры программиста я хотел досконально изучить языки, на

Подробнее

Использование шаблона «Стек»

Использование шаблона «Стек» Использование шаблона «Стек» 2013 Интерфейс шаблона «Стек» template class Stack { void push (const T&); T pop (); T top () const; bool isempty() const ; bool isfull() const ; } //в стек //из

Подробнее

Оператор представляет собой отдельно взятую команду, которая осуществляет то или иное действие интерпретатора Java при выполнении программы.

Оператор представляет собой отдельно взятую команду, которая осуществляет то или иное действие интерпретатора Java при выполнении программы. ГЛАВА 6 Операторы и блоки Оператор представляет собой отдельно взятую команду, которая осуществляет то или иное действие интерпретатора Java при выполнении программы. GigSim simulator = new GigSim( "Давай,

Подробнее

// конструктор матрицы с указанием ее размеров public Matrix(int rows, int cols) { a = new double[rows, cols]; }

// конструктор матрицы с указанием ее размеров public Matrix(int rows, int cols) { a = new double[rows, cols]; } Наследование Наследование это механизм, который позволяет создавать новые классы на основе существующих, используя их структурные и поведенческие свойства поля, методы, свойства и пр. Рассмотрим далее

Подробнее

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм.

Шаблоны. 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. Шаблоны 1. Механизм шаблонов реализует в С++ параметрический полиморфизм. 2. Шаблон представляет собой предварительное описание функции или класса, конкретное представление которых зависит от параметров

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

Обработка ошибок. Обработка ошибок. Александр Смаль. CS центр 2 марта 2016 Санкт-Петербург. 1/22

Обработка ошибок. Обработка ошибок. Александр Смаль. CS центр 2 марта 2016 Санкт-Петербург.  1/22 http://compscicenter.ru 1/22 Александр Смаль CS центр 2 марта 2016 Санкт-Петербург http://compscicenter.ru 2/22 Способы обработки ошибок Отсутствие обработки ошибок. size_t write ( string file, DB const

Подробнее

Содержание. Часть I. Основы Java 21

Содержание. Часть I. Основы Java 21 Содержание Об авторе 13 Введение 15 Как работать с этой книгой 15 Соглашения, используемые в книге 15 Что можно не читать 16 Несколько предположений 17 Структура книги 18 Часть I. Основы Java 18 Часть

Подробнее

КОЛЛЕКЦИИ В JAVA 8. Земляков Геннадий Евгеньевич. студент Самарский государственный аэрокосмический университет, Самара.

КОЛЛЕКЦИИ В JAVA 8. Земляков Геннадий Евгеньевич. студент Самарский государственный аэрокосмический университет, Самара. ЭЛЕКТРОННЫЙ НАУЧНЫЙ ЖУРНАЛ «APRIORI. CЕРИЯ: ЕСТЕСТВЕННЫЕ И ТЕХНИЧЕСКИЕ НАУКИ» 2 2014 УДК 004.9 КОЛЛЕКЦИИ В JAVA 8 Земляков Геннадий Евгеньевич студент Самарский государственный аэрокосмический университет,

Подробнее

Правила оформления кода. Отступы. Объявление переменных

Правила оформления кода. Отступы. Объявление переменных Правила оформления кода Часто программисты забывают что код программ пишется в первую очередь для людей. Даже если вы пишите программу в одиночку, то посмотрев на нее через месяц, вы не вспомните почему

Подробнее

Лекция 5. PHP И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Лекция 5. PHP И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Лекция 5. PHP И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ 5.1. Основы ООП 5.2. Классы и объекты в PHP 5.3. Наследование классов в PHP 5.4. Полиморфизм классов в PHP 5.5. Работа с объектами классов PHP

Подробнее

Элементы функционального программирования

Элементы функционального программирования Элементы функционального программирования Алексей Владыкин 20 октября 2014 Алексей Владыкин Функциональное программирование 20 октября 2014 1 / 31 1 Особенности ФП 2 Функциональные интерфейсы 3 λ-выражения

Подробнее

Тема: Знакомство» Пятый уровень с платформой.net

Тема: Знакомство» Пятый уровень с платформой.net Образец заголовка Образец текста Тема: Знакомство с платформой.net Образец заголовка План занятия Знакомство с платформой.net Образец текста Система типов Второй уровень Сборщик мусора Обработка Четвертый

Подробнее

Практическая работа 3

Практическая работа 3 Практическая работа 3 Задание на практическую работу В процессе написания тестовых заданий ознакомьтесь с: - принципами создания динамических структур в Java (Linked List, FIFO), - механизмами наследования

Подробнее

Современные технологии программирования (часть 2)

Современные технологии программирования (часть 2) Гуляев Г.М. Современные технологии программирования (часть 2) Лекция 5. Case - классы и поиск по шаблону (pattern matching) Курс лекций для студентов АлтГТУ LOGO Равенство объектов Проверка на равенство

Подробнее

C#: пользовательские типы

C#: пользовательские типы C#: пользовательские типы типы данных C# типы значения: перечисления (enum) структуры (struct) ссылочные типы: массивы классы (class) перечисления Существует возможность декларировать перечислимые типы

Подробнее

Статический анализ кода

Статический анализ кода Статический анализ кода (на примере DDD-фреймворка) Алексеев Алексей alekseev.aleksei@gmail.com aalekseev@custis.ru Николай Гребнев ngrebnev@gmail.com ngrebnev@custis.ru Структура доклада Введение Статические

Подробнее

СПб АУ НОЦНТ РАН. Java

СПб АУ НОЦНТ РАН. Java СПб АУ НОЦНТ РАН Java 07 26.04.2016 1 / 11 InterruptedException try { Thread.sleep(100); catch (InterruptedException e) { //? 2 / 11 InterruptedException. Причина Причина: вызов метода interrupt на объекте

Подробнее

Языки и методы программирования. Электронные тесты промежуточного контроля знаний

Языки и методы программирования. Электронные тесты промежуточного контроля знаний МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика

Подробнее

Лабораторная работа 13 Обработка XML файлов в Java

Лабораторная работа 13 Обработка XML файлов в Java Цель работы: Лабораторная работа 13 Обработка XML файлов в Java Овладеть навыками считывания данных из XML файлов в абстрактную структуру данных в оперативной памяти. Задача: Разработать методы класса

Подробнее

ОСНОВЫ ТЕОРИИ И ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. Пышкин Евгений Валерьевич к.т.н., доцент

ОСНОВЫ ТЕОРИИ И ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. Пышкин Евгений Валерьевич к.т.н., доцент ОСНОВЫ ТЕОРИИ И ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Пышкин Евгений Валерьевич к.т.н., доцент ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ Блок 9. Введение в модульное тестирование 3 Проблема тестирования разрабатываемых

Подробнее

Синтаксис и семантика языка программирования Паскаль

Синтаксис и семантика языка программирования Паскаль Синтаксис и семантика языка программирования Паскаль История Язык Паскаль был разработан в 1970 г. Никлаусом Виртом как язык, обеспечивающий строгую типизацию и интуитивно понятный синтаксис. Он был назван

Подробнее

Правила оформления программ

Правила оформления программ Правила оформления программ Этот список правил поможет вам оформлять свои программы красиво и правильно. За несоблюдение данных правил решение может не засчитываться и получать статус «Отклонено» или «Нарушение

Подробнее

ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß

ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß 178 ISSN 2072-9502. Âåñòíèê ÀÃÒÓ. Ñåð. Óïðàâëåíèå, âû èñëèòåëüíàÿ òåõíèêà è èíôîðìàòèêà. 2009. 1 УДК 004.43 В. В. Лаптев, В. В. Толасова ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß Введение В настоящее

Подробнее

МИРЭА. Отчет по практической работе 1 по дисциплине «Структуры и алгоритмы обработки данных» Выполнил студент группы ИСБОп Принял Шмелёва Д. В.

МИРЭА. Отчет по практической работе 1 по дисциплине «Структуры и алгоритмы обработки данных» Выполнил студент группы ИСБОп Принял Шмелёва Д. В. МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ высшего образования «Московский технологический университет» МИРЭА Институт информационных технологий (ИТ) Кафедра инструментального

Подробнее

Программирование на JAVA

Программирование на JAVA Программирование на JAVA Владимир Юрьевич Романов, Московский Государственный Университет им. М.В.Ломоносова Факультет Вычислительной Математики и Кибернетики vromanov@cs.msu.su, vladimir.romanov@gmail.com

Подробнее

ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ ВВОДА ЧИСЛОВЫХ ДАННЫХ ИЗ ТЕКСТОВОГО ФАЙЛА В MICROSOFT VISUAL BASIC Э.А.

ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ ВВОДА ЧИСЛОВЫХ ДАННЫХ ИЗ ТЕКСТОВОГО ФАЙЛА В MICROSOFT VISUAL BASIC Э.А. ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ ВВОДА ЧИСЛОВЫХ ДАННЫХ ИЗ ТЕКСТОВОГО ФАЙЛА В MICROSOFT VISUAL BASIC Э.А. Шибанова ФГБОУ ВПО «Мордовский государственный педагогический институт имени М.Е. Евсевьева», Россия

Подробнее

YART Studio. Язык программирования C-YART

YART Studio. Язык программирования C-YART YART Studio Язык программирования C-YART Санкт-Петербург 2018 Оглавление C-YART... 3 Типы данных... 3 Комментарии к коду... 3 Структура кода... 3 Переменные, константы и массивы... 4 Математические операторы...

Подробнее

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

Структурные типы данных Структурные типы данных Классы и структуры являются двумя основными конструкциями системы общих типов CTS (Common Type System) в платформе.net Framework. Каждая по сути является структурой данных, объединяющей

Подробнее

Обработка исключений

Обработка исключений Обработка исключений Обсуждается используемый в Java механизм обработки исключений. Исключение в Java это объект, который описывает исключительное состояние, возникшее в каком-либо участке программного

Подробнее

Selenium Part3. Maryna Didkovska

Selenium Part3. Maryna Didkovska Selenium Part3 Maryna Didkovska md@kpi.ua 1 2 Java Introduction Структура Java-объекта 3 4 Hello World - Task 1 Вывод резульатов в консоль System.out.println(); 1. Создайте новый класс в com HelloWorld

Подробнее

Программирование на языке Java

Программирование на языке Java Теория и технология программирования Программирование на языке Java Лекция 2. Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные конструкции Ветвления аналогично C++ if (...) {... }

Подробнее

C# (.NET) CANDIDATE CHECKLIST 1 / 5

C# (.NET) CANDIDATE CHECKLIST 1 / 5 C# (.NET) CANDIDATE CHECKLIST 1 / 5 SEVERAL QUESTIONS MAY IMPLY MORE THAN ONE CORRECT ANSWER # QUESTION CORRECT ANSWER OR CHOICE 1 Требуется создать класс B, использующий в качестве базового класс A. Выберите

Подробнее

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных

Лекция 9. Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных Технологии программирования Зима-Весна Лекция 9 Терновой Максим Юрьевич к.т.н., с.н.с., доцент кафедры информационнотелекоммуникационных сетей Вопросы, рассматриваемые на лекции 1. Частные (private) элементы

Подробнее

Web-технологии. Функции PHP. Кулаков Кирилл Александрович. ПетрГУ,

Web-технологии. Функции PHP. Кулаков Кирилл Александрович. ПетрГУ, Web-технологии Функции PHP Кулаков Кирилл Александрович ПетрГУ, 2016 1 Пользовательские функции Повторное использование блока кода Синтаксис: function имя (аргумент1[=значение1],...) { тело_функции; [return

Подробнее

Содержание. Часть I. Основы Java 21 Глава 1. Знакомство с Java 23. Введение 14. Глава 2. Разработка программного обеспечения 35

Содержание. Часть I. Основы Java 21 Глава 1. Знакомство с Java 23. Введение 14. Глава 2. Разработка программного обеспечения 35 Содержание Об авторе 13 Введение 14 Как работать с этой книгой 14 Соглашения, принятые в книге 14 Что можно не читать 15 Исходные предположения 16 Структура книги 17 Часть I. Основы Java 17 Часть II. Создание

Подробнее

Что такое качественный код, и как его писать?

Что такое качественный код, и как его писать? Что такое качественный код, и как его писать? Федор Юданов Senior Software Engineer @ Xored, Выпускник ФИТ НГУ Что нужно знать профессиональному программисту? Языки программирования (Java, C++, JS...)

Подробнее

Введение в объектно-ориентированное программирование.

Введение в объектно-ориентированное программирование. Лабораторная работа 12 Введение в объектно-ориентированное программирование. Цель работы. Изучение основ объектно-ориентированного программирования на языке Java. Содержание работы. В работе рассматриваются

Подробнее

Программирование на JAVA

Программирование на JAVA Программирование на JAVA Владимир Юрьевич Романов, Московский Государственный Университет им. М.В.Ломоносова Факультет Вычислительной Математики и Кибернетики vromanov@cs.msu.su, vladimir.romanov@gmail.com

Подробнее

Разработка приложения Калькулятор

Разработка приложения Калькулятор Разработка приложения Калькулятор Создадим простое приложение калькулятор на базе Swing. Чтобы начать создание первого Java-проекта, выполним команду File, New, Project..., рис.2. Рис.1. Создание нового

Подробнее

Лексика языка. Лекция 9

Лексика языка. Лекция 9 Лекция 9 Лексика языка Лекция посвящена описанию лексики языка Java. Лексика описывает, из чего состоит текст программы, каким образом он записывается, и на какие простейшие слова (лексемы) компилятор

Подробнее

JAX-WS. Пример написания клиента.

JAX-WS. Пример написания клиента. JAX-WS. Пример написания клиента. Преподаватель: Денис Сергеевич Фокин 09.10.08 JAX-WS Java API for XML Web Services Коммуникация Web сервисов и приложений с помощью XML Обмен данными, как на основе сообщений,

Подробнее

Информатика. Объектно-ориентированное программирование. Часть 2. Марченко Антон Александрович Абрамский Михаил Михайлович г.

Информатика. Объектно-ориентированное программирование. Часть 2. Марченко Антон Александрович Абрамский Михаил Михайлович г. Информатика Объектно-ориентированное программирование. Часть 2 Марченко Антон Александрович Абрамский Михаил Михайлович 2016 г. ООП продолжается Заказали два приложения #1 Система управления договорами

Подробнее

Паттерны (шаблоны) проектирования Фундаментальные паттерны

Паттерны (шаблоны) проектирования Фундаментальные паттерны Паттерны (шаблоны) проектирования Фундаментальные паттерны Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding eugeny.berkunsky@gmail.com http://www.berkut.mk.ua О чем вообще

Подробнее

Лекция 3 ОБЪЕКТЫ И КЛАССЫ

Лекция 3 ОБЪЕКТЫ И КЛАССЫ Лекция 3 Курс «Информатика» ОБЪЕКТЫ И КЛАССЫ В этой лекции рассматриваются следующие вопросы: Абстрактные типы данных Абстрактные типы данных Класс Stock достаточно специфичен. Однако часто программисты

Подробнее

Программирование на языке Java

Программирование на языке Java Теория и технология программирования Программирование на языке Java Лекция 5. Библиотека коллекций Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Назначение Работа с контейнерами различного

Подробнее

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания.

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Зачет проводится в практикуме и состоит из двух частей: теоретической

Подробнее

2.5.2 Типы данных, литералы, переменные, константы

2.5.2 Типы данных, литералы, переменные, константы 2.5.2 Типы данных, литералы, переменные, константы Для решения различных задач программы используют различные данные. Язык Java является строго типизированным языком. Это значит, что контроль типов осуществляется

Подробнее

Глава 6 ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ

Глава 6 ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ Часть 1. Глава 6. Интерфейсы и внутренние классы 139 Глава 6 ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ Интерфейсы Интерфейсы подобны полностью абстрактным классам, но не являются классами. Ни один из объявленных

Подробнее

Глава 15 Делегаты БИЛЛ ВАГНЕР ЭРИК ЛИППЕРТ

Глава 15 Делегаты БИЛЛ ВАГНЕР ЭРИК ЛИППЕРТ Глава 15 Делегаты Делегаты предназначены для случаев, в которых C++, Pascal и Modula используют указатели на функции. В отличие от последних в C++ делегаты являются полностью объектно-ориентированными.

Подробнее