Современные управляемые языки программирования
Адрианов Н.М., Иванов А.Б.
В осеннем семестре 2022 г. занятия по спецкурсу начнутся 17 сентября.
Когда: суббота, 16:45
Где: 802 2УК
Канал в telegram для организационных вопросов: https://t.me/+4_rmZcjFj8YzZjAy
В курсе изучаются языки программирования Java и C# и основы объектно-ориентированного программирования в применении к реализации эффективных алгоритмов и структур данных.
Программа
- История Java и .NET. Коцепция управляемых языков программирования
- Виртуальная машина. JIT-компиляция
- Основные типы данных и операторы
- Пространства имен
- Реализация ввода-вывода
- Объектно ориентированная модель. Классы, объекты, методы, свойства
- Наследование
- Ссылочные типы и типы-значения
- Строки, Unicode и кодировки
- Шаблоны и методы обобщенного программирования
- Исключения
- Понятие интерфейса и реализации. Компараторы
- Реализация классических абстрактных структур данных. Итераторы
- Лямбда-выражения
- Создание графических интерфейсов
- Поведенческие шаблоны проектирования
- Методики измерения скорости работы программы и расхода памяти
Литература
- Г. Шилдт «Java 8. Полное руководство», Вильямс, 2015
- Б. Эккель «Философия Java», Питер, 2014
- Дж. Рихтер «CLR via C#», Питер, 2013
- Дж. Скит «C#. Программирование для профессионалов», Вильямс, 2014
- Дж. Блох «Java. Эффективное программирование», Вильямс, 2018
Веб-ресурсы
Материалы лекций
- oop-1.pdf Введение в управляемые языки. История, виртуальная машина, JIT-компилятор, среда разработки, программа Hello, world.
- oop-2.pdf Статические методы и поля. Наследование и переопределение методов. C#: свойства и структуры (value types).
- oop-3.pdf Обобщенные типы данных (generics). Цикл foreach и итератор.
Проекты на языке C#
- algocs_hello.zip Ввод-вывод данных, сортировка массива
- algocs_comparable.zip Класс Person (конструктор, поля, методы и свойства), переопределение метода ToString, реализация интерфейсов IComparable<Person>, IComparer<Person>.
- algocs_structs.zip Ссылочные типы (reference types) и типы-значения (value types). Классы и структуры.
- algocs_stack.zip Реализация стека на основе массива. Обобщенные типы (generics). Реализация IEnumerable.
- algocs_hash.zip Реализация GetHashCode и Equals в пользовательском классе для хранения объектов в хеш-таблице.
- algocs_paint.zip Приложение с графическим интерфейсом (WinForms).
- algocs_reflection.zip Типы данных в runtime и reflection.
Проекты на языке Java
- algojava_first.zip Первая программа: метод main, пакеты, использование класса Scanner
- algojava_hello.zip Ввод-вывод данных, сортировка массива
- algojava_comparable.zip Класс Person (конструктор, поля, методы и свойства), переопределение метода toString, реализация интерфейсов Comparable<Person>, Comparator<Person>.
- algojava_stack.zip Реализация стека на основе массива. Обобщенные типы (generics). Реализация Iterable.
- algojava_hash.zip Как сравнивать строки. Реализация hashCode и equals в пользовательском классе для хранения объектов в хеш-таблице.
- algojava_paint.zip Приложение с графическим интерфейсом (Swing).
trades.zip Задание на использование LINQ / Stream API