1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Учимся программировать на Java вместе.

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Teozard, 1 апр 2013.

?

Продолжать ли данную тему ?

  1. Да, буду активно следить за этой темой

    76,8%
  2. Да, возможно найду что-то интересное

    15,2%
  3. Не имеет значения

    4,0%
  4. Нет, все это старо и не интересно

    1,4%
  5. Зачем ты вообще это начал?

    2,5%
  1. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    [​IMG]
    Произведение «"Учимся программировать на Java вместе"» созданное автором по имени Teozard, публикуется на условиях лицензии Creative Commons «Attribution-NonCommercial-NoDerivs» («Атрибуция — Некоммерческое использование — Без производных произведений») 3.0 Непортированная.​

    Доска почета:

    Содержание:
    Неделя первая
    1. Вступление
    2. Часть первая
    3. Часть вторая
    4. Часть третья (упражнения)
    Неделя вторая
    1. Часть первая
    2. Часть вторая
    3. Часть третья
    4. Часть четвертая (упражнения) // В процессе подготовки
    Учимся программировать на Java вместе. Слово автора.
    Всем привет. Чаще всего меня зовут Тео, на данный момент я студент первого курса. Сейчас для меня одним из приоритетных предметов является язык программирования Java, и я хотел бы предоставить материалы которые мы изучаем для общего обозрения и самообразования, чтобы привести все полученные знания в порядок. Большинство примеров - это материалы с лекций и практических занятий в институте.
    Неделя первая. Вступление.
    Курс предназначен для новичков, которые не имеют никакого опыта в программировании , но все таки имеют базовые навыки использования PC.
    В данной главе достаточно кратко будет рассмотрено несколько компонентов, даже не совсем программирования, но отношения человек-компьютер и о том, как они работают, а так же несколько подходов к созданию программы.​
    В чем разница между человеком и компьютером?
    • Компьютер делает то, что ему сказали делать (например, инструкции которые мы даем компьютеру с помощью программы)
    • Человек может думать и способен делать вещи совсем не так, как ему сказали.
    Так как компьютер большинство своего времени занят выполнением и решением различных проблем, то мы должны уметь поставить перед ним проблему или задачу. Для этого мы используем 3 типа структурных инструкций:
    1. Последовательность (Sequence)
    2. Решение (Decisions)
    3. Повторение (Repetitions)
    Последовательность- тип, в котором мы выполняем все свои действия последовательно, шаг за шагом. Пример: "Мы пришли домой, открыли окно, взяли книгу и сели на диван".
    Решение - тип, в котором вы становимся перед решением и условием, при котором мы должны выполнить действие, если присутствует какой-то фактор. Пример: "Мы идем гулять, если на улице дождь, то взять зонтик и выйти на улицу. Если дождя нету, то просто выйти на улицу".​
    Повторение - тип, в котором мы выполняем одно и то же действие, пока не будет выполнено окончательное условие. Пример: "Мы голодны. Взять тарелку с едой и начать есть. Мы все еще голодны? Да. Взять новую порцию и начать есть. Мы голодны? Нет. Покинуть кухню."​
    Все эти типы будут выполняться в виде кода, но все равно будут читаться подобным образом. как указано в примерах.​
    Отношения компьютер/пользователь в системах.
    [​IMG]
    Данная схема наглядно показывает, пусть и в очень простой форме, как мы работаем с компьютерами. Пользователи(Users) являются частью системы, пусть и не на прямую, но именно они задают необходимые параметры, данные (Data), которую используют либо программы(Application Software), либо системные приложения(System Software), чтобы передать информацию, к примеру, процессору, который будет вычислять полученные данные.
    Жизненный цикл разработки систем
    [​IMG]

    Планирование (Planning) - поставка перед собой задачи, что и как должно быть построено.​
    Анализ (Analysis) - определение условий.​
    Дизайн (Design) - формирование баз данных, определение оборудования и интерфейса​
    Реализация (Implementation) - настройка оборудования/сети, баз данных, написание программы, тестрование, обучение пользователей, установка.​
    Поддержка (Maintenance) - осмотр системы и выявление ошибок, вернуться к стадии планирования для исправления и улучшения​
    Программное обеспечение
    • Иногда зовется просто программами или приложениями
    • Имеет две основные характеристики:
      • Динамический (продолжает изменятся)
      • Комплексный
    Кроме того разработка программы может требовать несколько подходов.
    Их не малое количество, но в основной своей массе используются три основных подхода:​
    • Структурно-процедурное
      • Контролирует все изменения данных и использует один всего один процесс
    • Объектно-ориентированное(далее ОО)
      • Главный процесс контролирует все объекты, объекты обращаются к своим собственным данным.
    • Событийно-ориентированное(часто используется вместе с ОО)
      • Программа ждет специального события, который должен произойти, чтобы началось выполнение процесса (например, нажатие клавиши)
      • Множество процессов может выполнятся одновременно
     
    Reedanger, HardKrab, pizzlywizzly и 26 другим нравится это.
  2. Быстрая раскрутка сервера Minecraft
  3. MegaAntoxa1

    MegaAntoxa1 Старожил Пользователь

    Баллы:
    173
    Skype:
    antonkretov.ru
    Имя в Minecraft:
    Anton_Kretov
    Продолжай! Приятно читать!:3
     
    eshkin, book777 и Teozard нравится это.
  4. smail1k

    smail1k Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    smail1k
    Алсо, Тео вообще молодчик :3
     
    antigate, eshkin и Teozard нравится это.
  5. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Неделя первая. Часть первая.
    Знакомство с классами и объектами.

    Объектно-ориентированные системы.
    [​IMG]
    Используя Объектно-ориентированные системы мы должны четко понимать, что мы хотим сделать, а так же соблюдать несколько ключевых особенностей:
    • Всегда должна быть возможность добавлять значения, сохранить их или обработать, для дальнейшего извлечения и вывода.
    • Нужно определить тип ячейки данных для сохранения (к примеру, натуральное число "integer")и определить саму ячейку для обработки и вывода значения.
    • Нужно определить для чего мы добавляем это значение и как его можно будет использовать в дальнейшем.
    Еще один плюс объектно-ориентированных систем заключается в структуризации данных, и как следствие, создание систем, которые являются:
    • составными (множество компонентов, которые учитываются как одна часть)
    • модульными (когда компоненты создаются одна на другой, как кубики в конструкторах)
    • построенными на абстракции (без уточнения из чего построены компоненты, но с использованием оных)
    • организованными на полученных данных
    Абстракция и Классы
    Абстракция - это то, что мы описываем как проблему. Основной нашей задачей и работой является постоянное решение проблем, как например, создание базы о всех студентах в институте. Для этого мы придумываем, что мы нам надо в этой базе данных: Имя и Фамилия, Курс и Факультет.

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

    В классе есть два основных компонента:
    • Описание свойств (или переменных) - которые содержат данные для объектов.
    • Описание методов (функций или алгоритмов) - которые определяют возможность использование этих данных.
    К примеру, вернемся к нашей проблеме об учете студентов в университете. Для этого мы создадим программу, которая будет записывать данные об учащихся и сохранять их в базе. Для начала нам нужно определить какие параметры (к слову, параметры - это параметры у функции или параметры запуска ракеты, дабы не было недоразумений в терминологии - прим. редактора) есть у студентов и какие функции требует класс студент для успешного оперирования данными в новой базе.
    [​IMG]
    Это и есть класс, который, как говорилось выше, является шаблоном к объектам в которых мы уже будем заполнять данные.

    Объект
    Объект является продолжением класса и содержит в себе такие же функции и параметры, содержит в себе конкретные данные и используется для выполнения поставленной задачи.
    [​IMG]
     
    Ding0168, Reedanger, tolya100595 и 12 другим нравится это.
  6. CrowInSky

    CrowInSky Активный участник

    Баллы:
    63
    Ждём ещё!
     
  7. DragonX

    DragonX Старожил Пользователь

    Баллы:
    173
    Вот оно! То что нужно!
    Читаем:)
     
  8. DaDeraNeTiVe

    DaDeraNeTiVe Старожил Пользователь

    Баллы:
    173
    Skype:
    daderanetive
    Имя в Minecraft:
    DaDeraNeTiVe
    Создай блог ;)
    То что нужно будет !
     
  9. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Блог уже есть :)
    http://www.project-wd.ru/
     
    DragonX нравится это.
  10. DaDeraNeTiVe

    DaDeraNeTiVe Старожил Пользователь

    Баллы:
    173
    Skype:
    daderanetive
    Имя в Minecraft:
    DaDeraNeTiVe
    Оперативно ;)
     
  11. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Вот оно, преподование моей мечты. Всегда нравятся примеры из повседневной жизни.

    Школьники, вот такие учителя вам нужны :trf:
     
  12. smail1k

    smail1k Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    smail1k
    Блог Тео создал еще до статей здесь :3
     
    Teozard нравится это.
  13. Vova96

    Vova96 Старожил Пользователь

    Баллы:
    173
    Тео создал блог ещё до того, как это стало мейнстримом.
     
    ITrAnEI и Teozard нравится это.
  14. DaDeraNeTiVe

    DaDeraNeTiVe Старожил Пользователь

    Баллы:
    173
    Skype:
    daderanetive
    Имя в Minecraft:
    DaDeraNeTiVe
    У одного меня нет блога ?
    Пора меняться ....
     
    slavik123123123 нравится это.
  15. Googleman

    Googleman Старожил Пользователь

    Баллы:
    173
    Skype:
    google-apps
    Имя в Minecraft:
    Googleman
    Проще просто объединить в ООП и описать циклические алгоритмы.
     
  16. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Об этом тоже будет.
     
  17. D_ART

    D_ART Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    D_ART98
    Имя в Minecraft:
    D_ART
    Teozard нравится это.
  18. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Большое спасибо :)
     
  19. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Неделя первая.Часть вторая.
    Знакомство с Java.

    Как мы помним, программное обеспечение - это временное решение возникающих перед нами проблема. Чаще всего мы так же называем ПО как приложениями или программами с двумя базовыми характеристиками:
    • Они могут быть динамичными
    • Или комплексными
    Совершенно очевидно, что для создании программ нам надо использовать язык программирования (в нашем случае Java).

    Java является высокоуровневым языком, независимым от железа или операционной системы. Это достигается за счет установки JVM (Java Virtual Machine), которая и обрабатывает наш код, в понятный для машины язык.

    Программы на Java

    Код:
    // Это наша первая программа
    public class Hello
    {
      public static void main(String[] args)
        {
          System.out.println("Привет, Мир!");
        }
    }
    Это типичный и простейший пример программы на Java. Мы так же можем назвать это исходным кодом (Source Code).

    Для того, чтобы сохранить файл с кодом, мы должны назвать его именно так, как мы и назвали класс (public class Hello - означает, что файл мы назовем Hello), будьте внимательны при сохранении, так как Java очень чувствительна к реестру (сочетание главных и заглавных букв) и будет ругаться, если мы ошибемся с названием. Так же не стоит забывать, что программа должна быть сохранена с расширением .java

    Необходимая терминология

    Редактор (Editor) - программа, которая используется для редактирования и ввода текста. Файлы могут быть открыты, изменены и сохранены с помощью редактора. Из наиболее известных редакторов могут быть упомянуты, к примеру, стандартный блокнот в Windows или кроссплатформенный NotePad++.

    Компилятор Java (Java Complier) - компилятор, это именно то, что переводит язык программы в машинный код, или, так называемый, Байт код (Byte Code). Байт код хранится в файлах класса и имеет разрешение .class . Байт код Java написан с использованием шестнадцатеричного кода, который может выглядеть как:
    Код:
    CA FE BA BE 00 03 00 2D 00 3E 08 00 3B 08 00 01 08 00 20 08
    Преимущество этого кода, в том, что он одинаков на всех платформах.

    Java Vurtial Machine (JVM) - это то, что "на лету" обрабатывает байт код в машинный код, в тот момент, когда мы решаем запустить нашу программу.

    [​IMG]

    Среда разработки

    Java так же является платформой для разборки , с тех пор как создатели выпустили свой пакет разработки JDK ( Java Development Kit) и среду выполнения (Java Runtime Environment - JRE). С тех пор стала возможность писать программы использую любой текстовый редактор, а компиляцию и запуск выполнять с помощью JDK и JRE.

    Но для большего удобства были разработаны IDE (Integrated Development Environment - Интегрированная среда разработки), которые содержат в себе:
    • Редактор
    • Компилятор
    • Инструменты для поиска и исправления ошибок
    • Среду выполнения
    • Документацию
    Для Java есть несколько IDE, так как
    • Eclipse
    • NetBeans
    Каждый выбирает то, что нравится ему. Но данный курс будет использовать другой, более простой IDE, который называется DrJava (уверен, что большинство даже и не слышали о нем).
    Это простой, легкий и довольно мощный инструмент для разработки Java приложений, который распространяется под свободной лицензией BSD.

    Узнать больше о DrJava (английский)
     
    slavik123123123, tolya100595, kirr9999 и 4 другим нравится это.
  20. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    Упражнения к первой неделе.

    ► Упражнение 1.
    1. Создайте папку и назовите ее ProgFund. В ней создатей еще одну папку под название Week1.
    2. Запустите DrJava IDE.
    3. Перепишите программу ниже и сохраните ее как Hello.java в папке ...\ProgFund\Week1.
    Код:
    // Это моя первая программа на Java
    public class Hello
    {
      public static void main (String[] args)
      {
        System.out.println("Привет, Мир!");
      }
    }
    
    4. Скомпилируйте программу. Если этого не происходит, поищете у себя ошибки в написании (Небольшое замечание, важно , чтобы вы не просто копировали и вставляли весь код, но писали его сами).
    5. Идите в окно взаимодействия (консоль) DrJava и запустите программу написав java Hello.


    ► Упражнение 2.
    1. Измените название класса на Hello2 и сохраните его как Hello2.java
    2. Измените программу так, чтобы она выдавала вам "Привет, <имя>", там где <имя> поставьте свое, например "Привет, Тео".
    3. Сохраните, скомпилируйте и запустите программу.


    ► Упражнение 3.
    Напишите программу, которая отображала ваше имя посередине:
    Используйте пробел, что отцентрировать (Помните, что любой знак, в том числе и пробел, будет отображаться, только если он находится в кавычках). Наверняка есть способ и получше. Мы можем использовать специальный знак \t , который работает как табуляция. Поставьте его внутри кавычек несколько раз, чтобы закончить упражнение.


    ► Упражнение 4.
    Напишите программу, которая отображает ваш в ник внутри коробки, как показано ниже:
    Помните, что System.out.println выводит только одну линию.


    ► Упражнение 5.
    Напишите программу, которое выводит небольшой рисунок лица:
    Используйте комментарии. чтобы определить различные части рисунка, например:
    // знак "o" означает глаза
    или
    /* полоска "|" используется для
    контуров лица */


    ► Упражнение 6.
    Программы в предыдущих упражнениях были довольно простыми, но они не являются хорошим примером для того, чтобы показать, как работают объектно-ориентированные программы. Программа из примера, что будет ниже, состоит из двух классов и является хорошим примером ООП. Перепешите их и сохраните, используя правильные имена.
    Код:
    //Сохраните как Message.java
    public class Message
    {
      private String messageBody;
     
      public void setMessage(String newBody)
      {
        messageBody = newBody;
      }
      public String getMessage()
      {
        return messageBody;
      }
      public void printMessage ()
      {
        System.out.println(messageBody);
      }
    }
    
    Код:
    //Сохраните как MessageTester.java
    public class MessageTester
    {
      public static void main (String[] args)
      {
        Message mine = new Message ();
        mine.setMessage("Hello World");
      }
    }
    
    Постарайтесь ответить на вопросы ниже:
    1. Какая из этих двух программ является конроллером?
    2. Как вы думаете что это программа делает? Что она выводит?
    3. Просмотрите код и попробуйте объяснить что делает каждая строка.
    4. Скомпилируйте и запустите программу. Делает ли она то, что вы ожидали?
    5. Теперь давайте немного усложним код, добавив пример ниже в главный метод, после строки "Hello World", но перед "}".
    Код:
    Message yours = new Message ();
    yours.setMessage("This is my first program!");
    mine.printMessage();
    System.out.println(yours.getMessage() + " - " + mine.getMessage());
    
    Как вы думаете что этот код делает? Скомпилируйте и запустите программу.

    6. Теперь давайте сделаем так, чтобы программа спрашивала и выводила наше имя.
    • В MessageTester сделайте новый объект namePrompt, который выводил бы сообщение.
    • Сообщение должно быть "Как тебя зовут?"
    • Выведите namePrompt.
    • Теперь мы сделаем так, чтобы мы могли ответить на вопрос. Добавьте строку ниже в на самый верх MessageTester.
    Код:
     import java.util.*;  //Это библиотека, которая содержит классы для ввода/вывода
    И добавим еще кое-что в главный метод, прямо перед знаком "}".
    Код:
    Scanner input = new Scanner (System.in);//Создает объект ввода
    String name = input.next();            //”Сканирует” входящий поток и сохраняет те данные, что обнаруживает в переменной name
    • Теперь напишите так, чтобы выводилось "Hello" + ваше имя, используя System.out.println
    Итоговый результат должен быть примерно таким:
    [​IMG]

    9. Модифицируйте программу, чтобы она так же спрашивала еще и вашу фамилию и выводила вместе с именем.

    ► Упражнение 7. (*)
    Программа ниже находит среднее из двух чисел. Перепишите и сохраните оба файла.
    Код:
    //Average class
    public class Average
    {
      private double average;
     
      public void calculate_av(double firstnum, double secondnum)
      {
        average = (firstnum + secondnum)/2;
      }
     
      public void output_av()
      {
        // Часть 1, напиши код, чтобы вывести среднее число на экран
      }
    }
    
    Код:
    //AverageTester class
    import java.util.*;
     
    public class AverageTester
    {
      public static void main (String[] args)
      {
        double num1;
        double num2;
        Average myAvg = new Average(); //create an Average object called myAvg
     
        // Create a scanner to read from keyboard
        Scanner input = new Scanner (System.in);
     
        // Input numbers
        System.out.println("Enter first number:");
        num1 = input.nextDouble();
        System.out.println("Enter second number:");
        num2 = input.nextDouble();
     
        myAvg.calculate_av(num1, num2);
                  //Часть 2. Выведи значения, которые расположены в переменных объекта.
    // Как мы сможем это сделать? Посмотри на объект и скажи сделать это одному из его методов.
     
      }
    }
    
    1. Скомпилируйте программу и запустите ее. Можете ли вы видеть среднее двух числе? Почему?
    2. Завершите метод output_av в классе Average и добавьте нужный код в главный метод класса AverageTester.
     
    slavik123123123, second_vynder, Klever и 5 другим нравится это.
  21. Автор темы
    Teozard

    Teozard Активный участник Пользователь

    Баллы:
    93
    Имя в Minecraft:
    Teozard
    В скором времени подойдет вторая неделя курса.
    Небольшой опрос, так как количество откликов упало (а количество просмотров чуть ниже, чем ожидалось):
    • Читаете ли вы туториал?
    • Нравится ли формат в котором он выкладывается (разделение одной недели по частям, для лучшего восприятия + глава под упражнения) или вы хотели бы раз в неделю получать целую главу?
    • Чего, по вашему мнению, не хватает в этих уроках?
    • Выполняете (пытаетесь) ли вы выполнять задачи в конце?
    • Что вы могли бы посоветовать, чтобы сделать курс более удобным для чтения.
    Мне очень важны ваши ответы на данные вопросы, это не займет у вас много времени, но мне будет понятно куда двигаться дальше.


     
    gelion, Graphic Man, Klever и 3 другим нравится это.

Поделиться этой страницей