1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача курса Junior C#-developer
2 Лекции: 7 Лабораторные: 4 Контрольные: 2 Структура курса Завершение курса: экзамен Опционально: дипломная работа
3 Рабочие материалы 1. C# 3.0: руководство для начинающих, Герберт Шилдт. 2. C# и платформа.NET, Эндрю Троелсен, 3. CLR via C#, Jeffrey Richter, 4. C# сборник рецептов, Агуров П.В. Литература Руководство по программированию на C#
4 50-е годы: Фортран, Лисп, Алгол – появление языков высокого уровня 60-е годы: Cobol, Algol, Basic 70-е годы: С, Pascal - структурное программирование 80-е годы: С++ (ООП) 90-е годы: Java, Python, Delphi, - web и визуальное программирование 00-е годы:.net
Платформа.net 5 Возможности: 1.Обширная библиотека классов и компонентов. 2.Безопасность исполнения («управляемый код»). 3.Совместимость сборок, написанных на разных языках. 4.Переносимость приложений (условная). - программная платформа от Microsoft, предназначенная для разработки desktop и web-приложений.NET Framework.NET Compact Framework.NET Micro Framework Redistributable / SDK Web: ASP, Silverlight Game: XNA Game Studio + удобство и высокая скорость разработки - невысокая производительность, декомпиляция, привязка к ОС Windows
6 Код C, С++, Delphi,.. Библиотека функций Компилятор Машинный код (exe, dll) Compile Run CPU
7 Код (C#, VB.net,....) Код (C#, VB.net,....) Сборка (exe, dll) - байткод CIL Сборка (exe, dll) - байткод CIL Библиотека классов.net (FCL) Компилятор CLR JIT Машинный код Compile Run CPU
8
9 c:\Windows\Microsoft.NET\Framework\
10 Desktop
11 Mobile
12 Trends
Язык C# 13 Парадигмы:ООП, обобщенное, процедурное программирование Типизация:строгая, статическая Испытал влияние:С, C++, Java, Delphi, Smalltalk, Модула Релизы:1.0 – 2002, 4.0 – 2010, 5.0 – 2012 (beta) Прочее:Управляемый код Наличие сборщика мусора Microsoft Visual Studio (C#, Visual Basic.NET, Managed C++, F#) SharpDevelop MonoDevelop Язык общего назначения
14
15
IDE 16 Pro/Ultimate
17 Настройка шрифта: Tools\Options\Environment\Fonts and colors
18
Введение в ООП первая программа недостатки процедурного подхода ключевые понятие ООП структура программы на языке C# инкапсуляция и спецификаторы доступа создание объекта и вызов методов инициализация полей
class Program { static void Main() { System.Console.WriteLine("Hello, world!"); } Первая программа
21 Процедурный vs. Объектный // Стороны прямоугольника int a = 5; int b = 7; // Площадь int s = a * b; // Периметр int p = (a + b) * 2; Шаг 1. Простая последовательность инструкций Пример процедурного подхода
22 int Square(int a, int b) { return a * b; } int Perimeter(int a, int b) { return (a + b) * 2; } // Стороны прямоугольника int a = 3; int b = 5; // Площадь int s = Square(a, b); // Периметр int p = Perimeter(a, b); Шаг 2. Выделение функций Принципы СП: 1. Использование 3-х базовых конструкций (без goto). 2. Использование функций (подпрограмм).
23 int Square(int a, int b) { return a * b; } int Perimeter(int a, int b) { return (a + b) * 2; } // Стороны прямоугольника int a = 3; int b = 5; // Площадь int s = Square(a, b); b = 100; // Логическая ошибка // Периметр int p = Perimeter(a, b); Некоторые недостатки процедурного подхода: 1. Логически связанные данные разобщены (a, b, s, p). 2. Данные не защищены от прямой модификации. 3. Многократное дублирование кода (нет повторного использования).
24 ООП Основной единицей ООП является объект. Объекты – это программные аналоги понятий и предметов реального мира. Работа программы – это взаимодействие множества объектов, каждый из которых обладает единственной ответственностью. В языке C# парадигма ООП воплощается через классы. Класс = Данные + Методы Объект – это экземпляр класса
25 Ключевые понятия ООП: 1.Абстрагирование 2.Инкапсуляция 3.Наследование 4.Полиморфизм
26 public class Rectangle { private int width; private int height; public void Set(int w, int h) { width = w; height = h; } public int Square() { return width * height; } public int Perimeter() { return (width + height) * 2; } ОО-решение
27 class Program { static void Main() { // Создание объекта Rectangle rect = new Rectangle(); rect.Set(3, 5); int square = rect.Square(); int perimeter = rect.Perimeter(); }