Как создать программу для компьютера

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 Вступление - Язык UML 00:03:45
1 тест
28 чел. ★ 4.9 Done
  Мы начинаем создание новой программы на языке Java.
Цель курса - продемонстрировать процесс
проектирования и создания прикладного
программного обеспечения на языке Java.

Отчёт отправил: 10558. Иван Воронин Выполнено за не указано [Показать отчёт]
Комментарии: UML - это стандартный язык для разработки "чертежей" программного обеспечения. 
2 Вступление - Примеры UML схем 00:06:18
1 тест
24 чел. ★ 5 Done
  На этом уроке мы познакомимся с ещё одной статьёй про UML.
Сопоставим UML-диаграмы и созданные по ним классы.

Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Созданию и генерации UML схем. 
Сложности: найти время 
Комментарии: По поводу программ для генерации UML из кода Java, есть куча плагинов для различных IDE. Жаль тут нет добавления картинок, я бы добавил пару версий. з.ы. На первом скриншоте пример генерации из исходников ООФрукты в схему UML при помощи плагина: simpleUML для IntelliJ IDEA. На втором скриншоте пример генерации из исходников ООФрукты в схему UML при помощи приложения с исходным кодом: Code 2 UML. 
3 Проектирование - Три класса 00:05:32
1 тест
24 чел. ★ 5 Done
  На этом уроке мы познакомимся с сайтом draw.io,
на котором удобно рисовать самые разные схемы.

Нарисуем три «классных» прямоугольника:
Student, Lesson, Pupil.

Самостоятельное задание - придумать и вписать
необходимые поля и методы для этих классов.
Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт]
Научился: Рисованию UML при помощи ресурса draw.io 
Сложности: найти время 
Комментарии: Тоже никогда ранее не приходилось проектировать ПО при помощи UML схем. 
4 Проектирование - Классные диаграмы 00:13:35
1 тест
23 чел. ★ 5 Done
  На этом уроке мы обсудим суть поставленной задачи.
Впишем все необходимые поля и методы для каждого класса.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Стилю формирования структуры классов. 
Сложности: найти время 
Комментарии: Отличный урок, но некоторые вещи всё же были не в едином стиле, подправил у себя, в любом случае, в этом стиле не хватает подсветки синтаксиса =) 
5 Проектирование - Выяснение отношений 00:11:24
1 тест
23 чел. ★ 5 Done
  На этом уроке мы выясним отношения классов друг к другу.
Кто кого имеет и каким образом.

Дорисуйте на схеме стрелочки отношений
и добавьте надписи над стрелочками о типе отношений.

Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Работе со стрелочками и именованию их. 
Сложности: найти время 
Комментарии: Отличный урок, идём дальше. з.ы. Распечатал, конечно не А3, а А4, но всё же =) 
6 Создание - Класс Lesson 00:09:51
1 тест
20 чел. ★ 5 Done
  На этом уроке мы приступим, наконец-таки, к программированию.
Мы создадим пустые классы Program, Student, Lesson, Point.
Добавим описанные в UML-диаграме поля и методы в класс Lesson.
В классе Program создадим код для запуска написанного кода.
Отчёт отправил: 10558. Иван Воронин Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: На скриншоте видно, что у меня два монитора, на одном кодю, на другом схему видно. Поэтому распечатывать не обязательно =) 
7 Создание - Класс Student 00:10:24
1 тест
17 чел. ★ 5 Done
  На этом уроке мы опишем поля и методы класса Student.
В основной программе создадим трёх студентов и выведем их на экран.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Повторение пройденного 
Сложности: найти время 
Комментарии: Записал студента на лекцию и вывел на какие лекции студент записан. 
8 Создание - Класс Point 00:14:24
1 тест
16 чел. ★ 5 Done
  На этом уроке мы создадим все поля и методы класса Point.
Затем добавим каждому студенту несколько оценок.
Потом вспомним, что забыли записать студентов на лекции.
Во второй половине урока мы займёмся созданием
студенческого метода для формирования карточки getInfo ().
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 час. 20 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Отличный урок, но по поводу конкатенации строк внутри аппенда стрингбилдера это не есть гуд, лучше разделять каждый кусок на отдельный аппенды, см. скриншот. 
9 Отладка - Пошаговый проход 00:18:05
1 тест
16 чел. ★ 5 Done
  На этом уроке мы пошагово пройдём по каждой строчке программы.
Просмотрим состояние всех переменных и экземпляров объектов.
Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: И без дебага понял как это работает, на прошлом уроке сразу понял, что у вас ни одной оценки не добавилось, потому что не записали студентов на лекции. Фильтрацию оценок по предметам тоже реализовал сам, потом на видео отпустил паузу =) з.ы. на втором скрине провёл исследование по поводу конкатенации строк при .append(), это ещё мелкие значения склеивались, но уже разница 1,5 раза, серьёзная. 
10 База - Статический класс 00:11:08
1 тест
15 чел. ★ 5 Done
  На этом уроке мы спроектируем класс Book
для хранения всех данных нашей объектной базы.


Отчёт отправил: 10558. Иван Воронин Выполнено за 25 мин. [Показать отчёт]
Научился: Закрепил проектирование UML схем 
Сложности: найти время 
Комментарии: Отличное продолжение курса. С каждым уроком привыкаешь к UML, как будто всю жизнь им пользовался и без него уже никуда, очень удобно для создания набросков на основе конкретных задач. Причём стиль написания методов может быть любым, в основном используется синтаксис языка, на котором будет реализовано то, что проектируется в формате UML. 
11 База - Список студентов 00:13:03
1 тест
15 чел. ★ 5 Done
  На этом уроке мы создадим класс Book,
и добавим в него поля и методы
для работы со списком студентов.

Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Закрепил пройденное 
Сложности: найти время 
Комментарии: Так как использовали ArrayList, то метод getStudent(int index) реализовал по другому, без try/catch 
12 База - Список лекций 00:08:56
1 тест
15 чел. ★ 5 Done
  На этом уроке мы добавим в класс Book поля и методы для работы со списком лекций.
В основной программе мы разместим код для демонстрации этих методов.

Мы также обсудим, когда и почему не/стоит использовать HashSet.

Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Суть 4 вопроса ясна, даже при том, что перепутали что где используется, в Book использовали ArrayList, потому что изучение одной и той же лекции может быть не несколько параллельно или последовательно не важно. а вот для Студента храним уникальные Лекции, чтобы не ошибиться в том, за какую именно лекцию он получил оценки, так как если он запишется повторно на лекцию по тому же предмету, то и оценки будут уже за новую лекцию, чтобы не перепутать (это если добавить в лекциям дату, например, чтобы они отличались уникальностью, но были одинаковые по названию). 
13 База - Список оценок 00:10:24
1 тест
15 чел. ★ 5 Done
  На этом уроке мы добавим в класс Book поля и методы для работы со списком оценок.
Также удалим старые поля и методы из класса Student для работы с оценками.
В основной программе мы добавим случайные
оценки каждому студенту по каждой лекции.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Да, ООП иногда не оптимальные решения предлагает, но на то это и ООП! Весь этом и заключается весь цимус!!! 
14 ПОЛУФИНАЛЬНЫЙ УРОК без видео
1 тест
15 чел. ★ 5 Done
  Поздравляю с экватором.
Предлагаю немножко передохнуть.
Напиши,чему ты научился за первую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Проектированию при помощи UML. 
Сложности: найти время 
Комментарии: В первой части курса научился проектированию создаваемого ПО при помощи универсального языка UML. Так же закрепил ООП в связке с языком Java. Огромное спасибо Евгению Витольдовичу ака "Игромистр" за интересные идеи для новых курсов по изучению тех или иных технологий разработки конечных продуктов. 
15 Меню - Планирование 00:13:48
1 тест
14 чел. ★ 4.9 Done
  На этом уроке мы спроектируем класс Menu
для интерактивного управления нашей объектной базой.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Закрепил проектирование при помощи UML 
Сложности: найти время 
Комментарии: Забыли добавить тип Scanner для приватной переменной scanner =) в остальном увидим при реализации. Так же отсортировал методы по типу. Плюс отрефакторил всю схему для компактности. 
16 Меню - Интерактив 00:17:20
1 тест
13 чел. ★ 5 Done
  На этом уроке мы создадим класс Menu для отображения основного меню управления нашей базой.
Реализуем основные методы работы с базой через пункты меню.
Дорисуем недостающие методы в классе Menu на нашей схеме.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Закрепил работу с UML, повторил пройденное 
Сложности: найти время 
Комментарии: Добавил наработки по генерации рамки для отображения меню. 
17 Меню - Работа со студентами 00:14:33
1 тест
12 чел. ★ 5 Done
  На этом уроке мы продолжаем реализацию методов класса Menu.
Начнём с методов добавления/отображения студентов: doAddStudent() и doShowStudents().
И проверим работу приложения добавив несколько студентов, после чего выведем их с порядковыми номерами из базы.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Поставил на паузу видео и сразу реализовал список студентов с их айди в БД, так как этот айди потом можно будет использовать для работы с конкретным студентом (запись на лекции и выставление оценок). 
18 Меню - Работа с лекциями 00:19:02
1 тест
12 чел. ★ 5 Done
  На этом уроке мы воспользуемся ранее переименованным методом addRandomRecords()
чтобы не вводить каждый раз при запуске программы начальные данные для тестирования.
В классе Menu мы реализуем методы doAddLesson() и doShowLessons()
для добавления и просмотра лекций.
Отрефакторим название метода doAddLessonToStudent() в doAssignLessonToStudent() класса Menu как в коде,
так и на нашей UML схеме для лучшей передачи смысла его работы.
Реализуем необходимые методы inputStudentIndex() и inputLessonIndex().
Добавим более информативный вывод работы программы.
Отчёт отправил: 10558. Иван Воронин Выполнено за 45 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Ещё с прошлых уроков реализовывал логи выполнения тех или иных методов с использованием имён студентов, названий лекций и т.д. чтобы было более информативно. Так же модернизировал методы добавления записей, чтобы сообщать и при ошибке добавления. 
19 Меню - Запись студента на курс 00:13:48
1 тест
12 чел. ★ 5 Done
  На этом уроке мы добавим новый пункт в наше меню для отображения карточки студента.
Реализуем новый метод doShowStudentCard() для отображения карточки выбранного студента,
так же добавим этот метод в класс Menu на нашей UML схеме.
Подкорректируем уровни доступа методов в классе Menu на нашей UML схеме и в коде.
Отрефакторим метод doAssignLessonToStudent() выделив часть кода в отдельные методы.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Переделал отображение карточки студента, чтобы отображалось в рамке. Добавил возможность удаления студента/лекции. 
20 Меню - Работа с оценками 00:22:11
1 тест
11 чел. ★ 5 Done
  На этом уроке мы реализуем метод doAddPoint() для оценивания успеваемости студентов по пройденным лекциям.
Добавим соответствующий красивый вывод информации о полученной оценке студентом за такую то лекцию.
Реализуем матрёшку-перегрузку из методов для получения списка лекций определённого студента.
Отчёт отправил: 10558. Иван Воронин Выполнено за 40 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Реализовал все пункты и даже больше, см. скриншот консоли. Так же добавил скриншот UML схемы, так как очень многое там пришлось подправить и добавить, например: в классе Book мы избавились уже давно от Конструктора, создав вместо него метод clear(), но так до сих пор это не отразили на схеме. Так же на схему добавил свои доп. методы, которые реализовал для решения доп. задач (удаление студента/лекции и т.д.) 
21 Сериализация - Статическое напряжение 00:10:46
1 тест
11 чел. ★ 5 Done
  Во мы и закончили нашу объектную базу данных на языке Java, но у неё есть один недостаток!
Все данные которые хранятся в нашей базе нигде не сохраняются и при каждом её запуске обнуляются.
На этом уроке мы приступим к сериализации нашей базы данных для сохранения изменений на диск.
Первое что нам необходимо будет сделать, это избавиться от static в классе Book.
Так же нам нужно добавить Конструктор в класс Book и добавим туда метод clear()
для автоматической подготовки базы к работе при создании её экземпляра.
Реализуем работу экземпляра класса Menu с экземпляром класса Book.
Исправим ошибки связанные с изменением доступности нашей базы.
Создадим метод start() в классе Menu и перенесём туда реализацию работы с меню.
Отчёт отправил: 10558. Иван Воронин Выполнено за 45 мин. [Показать отчёт]
Научился: Убирать у класса static 
Сложности: найти время 
Комментарии: Сериализация это процесс перевода какого-либо объекта в последовательность бит. Десериализация это процесс восстановления объекта из последовательность бит. 
22 Сериализация - Сохранение базы 00:12:23
1 тест
11 чел. ★ 5 Done
  На этом уроке мы реализуем сериализацию нашей базы данных в файл на диске.
Для этого мы внедрим интерфейс Serializable в нашем классе Book,
так же необходимо внедрить интерфейс Serializable во все классы,
которые используются классом Book, а именно: Student, Lesson и Point.

Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Сериализации объектов 
Сложности: найти время 
Комментарии: Так же добавил возможность вводить имя файла базы данных как аргумент для приложения, чтобы можно было манипулировать разными базами данных =) Отличный урок, очень полезный метод хранения данных, пока база не будет весить гигабайты =) 
23 Сериализация - Восстановление базы 00:11:04
1 тест
11 чел. ★ 5 Done
  На этом уроке мы реализуем десериализацию нашей базы из файла
обратно в память нашей программы, чтобы продолжить работу с введёнными ранее данными.
После чего мы несколько раз запустим нашу программу, каждый раз вводя новые данные.
Убедимся, что при каждом запуске восстанавливаются предыдущие данные.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Десериализации файла 
Сложности: найти время 
Комментарии: Реализовал метод doShowPoints() в классе Menu. Модернизировал метод showInfo() класса Stedent для более информативного вывода карточки студента. Так же при попытке записи студента на несуществующую лекцию выводятся соответствующие сообщения. 
24 ФИНАЛЬНЫЙ УРОК без видео
1 тест
9 чел. ★ 5 Done
  Поздравляю с завершением курса!

Оставь, пожалуйста, отзыв об этом курсе.

Запиши видеообзор созданной программы.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Отличный курс от начала и до конца задействованы все необходимые инструменты и технологии для реализации консольных баз данных по любому направлению, подобное ПО в супермаркетах вижу часто на мониторах кассовых аппаратов. Использование сериализации/десериализации показывает яркий пример самого простого способа хранения ранее введённой информации без использования сторонних библиотек или технологий, по сути портативная программа получается, можно её вместе с файлом базы переносить куда угодно и она будет открываться и работать как надо. Спасибо Евгению Игромистру Витольдовичку за этот замечательный курс!!! з.ы. Когда проходил курс и формировал описание, у финального описание было и я его просто недоглядел, тем самым не сделав сразу, но проверяя отчёты удивился, увидев отчёт по курсу, который я думал уже прошёл на 100% =) 
Видеообзор: tlcAOYsc73E
  Итого:   24 видеоурока 4 час. 31 мин.
24 теста
9 чел. ★ 5  
  Финалисты:   Сергей Соколов,   Иван Воронин,   Алексей В.,   Новопашин Владимир,   Dmitrij Starikovič,   Tekashnik,   Dmitry Sinitsin,   Anatoli,   Tom .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Замечательный курс по работе с Java. Много времени отдано на этап проектирования (что очень важно). А также проработка всех аспектов БД. Ну и конечно же сериализация и десириализация, что позволяет программе быть крайне мобильной таская с собой всего один файл. Курс однознчно рекомендован к прохождению. Видеообзора нет, так как делал курс давно, уже исходников нет... сейчас подчищаю хвосты..
Трудности: Вспомнить, что было в курсе))



Научился: В этом курсе научился создавать UML-диаграммы классов, выполнять сериализацию и десериализацию объектов.