Задачи на классы java

Задачи на классы java

Всем добрый день.
По ходу изучения java возник вопрос с задачником или,возможно,курсами, которые могут помочь структурировать материал и дать практические задачи по применению языка.
На данный момент я читаю Шилда 8-ое издание. Там хорошая теория, примеры, но нету задач (или я до них еще не дошел). Немного поискав про обучение через интернет по данному языку нашел следующие сайты:
1)javarush.ru
2)ru.hexlet.io
3)geekbrains.ru
Кто-нибудь может подсказать новые или рассказать про свой опыт на данных сайтах? Как там с задачами, есть ли там теория и как она подана? Так же буду рад за новые ресурсы, которые можно изучить и из которых выбирать.

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

Создать статический метод, который будет иметь два целочисленных параметра a и b, и в качестве своего значения возвращать случайное целое число из отрезка [a;b]. C помощью данного метода заполнить массив из 20 целых чисел и вывести его на экран.

2. Задание

Создать метод, который будет выводить указанный массив на экран в строку. С помощью созданного метода и метода из предыдущей задачи заполнить 5 массивов из 10 элементов каждый случайными числами и вывести все 5 массивов на экран, каждый на отдельной строке.

3. Задание

Создать метод, который будет сортировать указанный массив по возрастанию любым известным вам способом.

4. Задание

В массиве хранится 7 явно заданных текстовых строк. Создать программу, которая отсортирует и выведет на экран строки в алфавитном порядке. Например, если были даны такие строки:
Пушкин
Лермонтов
Некрасов
Толстой Л. Н.
Толстой А. Н.
Есенин
Паустовский

Программа должна вывести на экран:
Есенин
Лермонтов
Некрасов
Паустовский
Пушкин
Толстой А. Н.
Толстой Л. Н.

Указание: прежде всего надо создать метод, устанавливающий отношения порядка для двух строк, переданных методу через аргументы.

Рекурсия

1-3. Задания

  1. Выясните экспериментальном путём, начиная с какого элемента последовательности Фибоначчи, вычисление с использованием рекурсии становится неприемлемым (занимает более минуты по времени).
  2. Создайте гибридный метод, для небольших n вычисляющий n-ое число Фибоначчи с помощью рекурсии, а для значений, превышающих выясненное вами в предыдущей задаче пороговое n, вычисляющий n-ое число Фибоначчи с помощью итерационного алгоритма (цикла, в рамках которого будут сохраняться значения двух предыдущих элементов последовательности).
  3. Подсчитайте, сколько раз потребуется повторно вычислить четвёртый элементы последовательности Фибоначчи для вычисления пятнадцатого элемента.

Создание классов (продолжение). Класс Object

1. Задание

Создайте в классе метод, который будет выводить на экран сообщение о том, в какой координатной четверти лежит точка.

2. Задание

Создайте в классе метод, проверяющий, являются ли две точки симметричными относительно начала отсчёта.

3. Задание

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

4. Задание

Создайте в классе метод, проверяющий, являются ли три точки коллинеарными (т.е. лежащими на одной прямой).

5. Задание

Вместо представленного метода equalsPoint перегрузите в классе методы equals и hashCode.

Создание классов (конец). Полиморфизм, инкапсуляция

1. Задание

Создайте класс треуголников на координатной плоскости, используя в качестве полей объекты-точки. Реализуйте в классе:
a) конструктор, позволяющий задавать вершины с клавиатуры;
b) метод print() выводящий описание треугольника на экран;
c) методы для вычисления периметра и площади треугольника.

2. Задание

Доработайте конструктор таким образом, чтобы нельзя было задать три вершины, лежащие на одной прямой. Это несложно будет сделать с использованием метода из класса точек, который проверяет явлются ли точки коллинеарными, если прежде вы не реализовали этот метод, то сейчас самое время сделать это.

Читайте также:  Звук топота соседей сверху

3. Задание

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

4. Задание

Создайте метод, поворачивающий треугольник вокруг центра тяжести на указанное в аргументе количество градусов.

Пост вольный перевод статьи:

Для начала создаем проект JavaFX

Выбираем JavaFX и жмем Next

Даем имя проекту и жмем Finish.

Контроллер — это класс, предназначенный для непосредственной обработки запросов от клиента и возвращения результатов.

Чаще всего, в самом контроллере не описывается логика обработки данных. Создаются дополнительные, сервисные классы, которые выполняют все основные задачи по обработке данных. Задача методов в контроллере — вызов сервисных методов в нужном порядке и возвращение результатов клиенту.

Основная задача методов контроллера — определить требуемое действие, корректно принять данные, корректно возвратить результат. При тестировании методов клиента рекомендуется проверять не фактическую обработку данных, а корректный вызов всех команд в методе — предполагая, что алгоритм работы этих методов продуман верно.

Файл sample.fxml отвечает за интерфейс пользователя.

Переименовываем Controller в файле Controller.java

1. Наводим на имя класса-контроллера (Controller), выбираем Refractor->Rename и меняем имя класса-контроллера:

Жмем enter и завершаем рефракторинг. В файле sample.fxml должно было измениться имя класса контроллера: fx:controller="sample.SampleController"

Важный момент, конструкция fx:id будет использоваться часто, она означает, что мы работаем с объектом класса Controller.

Создадим кнопку в интерфейсе пользователя, для этого в файл sample.fxml добавим следующие сточки:

Возможно, понадобиться руками добавить:

Как видите sayHelloWorld отмечен красным цветом, а helloWorld выделен.

Используя встроенные функции IDEA создадим поле helloWorld в файле SampleController.java

Жмем enter, завершаем рефракторинг.

Далее создаем функцию sayHelloWorld встроенными способами IDEA:

Жмем enter и завершаем рефракторинг.

Добавляем действие в функцию sayHelloWorld:

Результат работы программы:

Добавим стили в нашу программу.

В файл sample.fxml добавим следующий текст:

Встроенными методами IDEA создадим файл sample.css

В файл sample.css добавляем текст:

-fx-background-color: gold; //Цвет заднего фона окна

-fx-font-size: 20; //Высота текста Hello World

Результат работы программы:

Изучаем вместе

Добрый день, есть ли среди участников сообщества те, кто хотел бы поделиться опытом в изучении Джавы или же те, кто непосредственно занимается изучением данного языка и захотел бы к примеру сравнить свои результаты с другими (такого же уровня)?

На данный момент я изучаю Джаву по книгам, разным ресурсам и мне не хватает такой вещи как непосредственного общения с разработчиком, который мог бы сказать на что конкретно нужно делать уклон, что я делаю не так при изучении и как правильно двигаться дальше. Да и мотивировало бы это больше. Так же не помешало бы и общение с изучающими людьми, узнавать их подход.

Если кто-нибудь откликнется, будет здорово. Если это будет больше одного человека, можно было бы создать телеграм канал или что то в этом духе.

Всем добра, бобра и лучей позитива!

Помогите начинающему программисту JAVA

Дорогие пикабушники. Если среди вас есть программист по java, подскажите новичку как набирать опыта. т.е. требуется практика, примеры работы или участие в каком не будь проекте как новичку.

Небольшой разбор первого задания

При прочтении просьба не забывать, что я всего лишь кот :3

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

private String name, colour;
private double weight, length, height, strength;

Конструктор по умолчанию, присваивающий стандартные значения переменным класса:

public Cat () <
name = "NoName";
colour = "Black";
weight = 6.5;
length = 1.0;
height = 0.4;
strength = 0.5 * weight * length * height;
>

Конструктор, через который мы сможем в программе присвоить свои значения переменным класса:

public Cat (String name, String colour, double weight, double length, double height)
<
this.name = name;
this.colour = colour;
this.weight = weight;
this.length = length;
this.height = height;
strength = 0.5*weight * length * height;
>

Так как имена передаваемых параметров в конструкторе совпадают с переменными класса, используется конструкция this.переменная = переменная.

Читайте также:  Распознать речь в текст

Вводится функция класса, позволяющая получить имя кота. Это необходимо, так как переменные класса имеют модификатор private и доступа к ним извне нет.

И проверка класса на работоспособность:

public static void main(String[] args)

<
Cat cat1 = new Cat();
System.out.println(cat1.getName());
Cat cat2 = new Cat("Salem", "Black", 6.5, 1.0, 0.4);
System.out.println(cat2.getName());
>

Так как классы имеют сложную структуру необходимо использовать ключевое слово new для того, чтобы для него была выделена память программой.

Программа выводит следующее:

Вручите мне мой приз, пожалуйста.)

Когда Hello world уже не достаточно.

Привет всем кто учит какие либо языки программирования, а в особенности Java.

Я далекий от про уровня человек, но люблю на досуге писать код. И вот я не так давно (благодаря упоминанию тут), открыл для себя ресурс codewars.

Ресурс поддерживает много языков программирования, так что одни и те же задачи можно решать разными языками. Пользователи сами могут создавать задачи для других и тд.

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

Класс Cat

Задание 1: создать класс Cat. Кот имеет свойства имя, вес, цвет, рост, длина и зависящее от веса, роста и длины свойство — сила. Класс Cat должен иметь параметры по умолчанию.

Интересный вопрос.

Все знаю про три закона робототехники разработанные А. Азимовым

Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.

Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.

Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.

(Не обязательно же наличие "позитронных" мозгов, становится актуально с появлением автомобилей на автопилоте)

Но хоть один программист пытался их написать машинным или программным кодом??

Реализация программы TankBattle с использованием Swing. Часть первая — создание окна приложения.

О да, я вернулся..)

Вся графика реализована в файле: Graphics.java.

Открытие окна происходит через стандартную для Swing процедуру:

С помощью SwingUtilities.invokeLater мы помещаем создание окна в очередь событий — event dispatch thread.

Основное окно использует компоновщик BoxLayout:

frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)

и размещает панели сверху-вниз.

Внутрь окна мы помещаем две панели: MainPanel и BottomPanel, которые будут содержать более детальные блоки программы, о чем будет рассказано ниже.

Примерная структура любого окна в Swing:

Структура нашего окна:

Параметры нашего окна определяются следующими командами:

На первый взгляд мудрено.

Рассмотрим более детально.

Внутрь MainPanel помещаются три панели — LeftPanel, CenterPanel, RightPanel, для них задаются конкретные размеры с помощью функции setPreferredSize(new Dimension(X, Y)). Дальше простая арифметика — сумма параметров по X и Y должна равняться параметрам

X и Y MainPanel.

Внутри MainPanel используется тоже компоновщик BoxLayout, но уже по оси X, размещающий панели слева-направо.

Внутрь панелей вносятся элементы. Для позиционирования элементов я выбрал способ — создание EmptyBorder(int top, int left, int bottom, int right) и задание конкретных размеров элементов через функцию setPreferredSize(new Dimension(X, Y)).

В BottomPanel помещаются две кнопки и разносятся по сторонам через:

Внутри элементов TextPanel размещаются элементы JTextPane. Использование данных элементов позволило стилизовать текст через следующую конструкцию:

StyleConstants.setAlignment(simpleAttributeSet, StyleConstants.ALIGN_LEFT)— выравнивание по левому краю.

StyleConstants.setFontSize(simpleAttributeSet, 12) — размер шрифта.

StyleConstants.setFontFamily(simpleAttributeSet, "Times New Roman, cursive") — семейство шрифта.

simpleAttributeSet.addAttribute(StyleConstants.CharacterConstants.Foreground, new Color(112, 126, 173)) — цвет шрифта.

Дляотражения имеющихся танков использованы JProgressBar-ы, в дальнейшем они будут отражать промежуточные показатели здоровья танком, а не только жив-мертв.

Читайте также:  Принтер сканер копир для дома отзывы

setMinimum(0) — минимальное значение в прогресс баре.

setMaximum(100) — максимальное значение.

setValue(100) — текущее значение.

setString("Легкий танк СССР " + (i + 1)) — аннотация.

BattleList (JTextPane) мы помещаем внутрь JScrollBar и назначаем параметр jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) — чтобы всегда отражался скролл.

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

public static void setButton(String text, Boolean setActive) — меняет нашу кнопку buttom (меняет текст и делает активно/неактивной).

public static void setHealthes(Tank ussrTank, Tank germanTank) — меняет параметры здоровья в текстовых блоках слева и справа.

public static void setCurrentBattle(Tank ussrTank, Tank germanTank) — устанавливает текст текущей битвы в текстовом блоке CurrentBattle.

public static void updateFrame() — обновляем окно.

public static void updateBattleList() — обновляем battleList.

public static void startBattle() — запускает бой.

public static void setTankHealth(int id, int percent) — устанавливает значение здоровья танка в соответствующем JProgressBar.

public static void showLog() — отображает окно лога битвы.

Лог битвы выведен на отдельную кнопку, открывающую окно лога, состоящего из JFrame и помещенного в него JScrollBar с вложенным в него JTextPane.

За сим на сегодня все..) Продолжение следует. )

Выполняем задание на Abstract Factory Pattern часть 1

В первой части мы создадим абстрактную фабрику танков, по одному экземпляру каждого танка и проведем бой между случайными танками СССР и Германии.

Опишу лишь пару, на мой, взгляд интересных моментов.

Классы LightUssrTank, MediumUssrTank, HeavyUserTank имеют различный показатель armor. Все переменные в классах имеют модификатор private, а значит объявление переменной должно происходить в классе . Но UssrFactory возвращает объекты класса Tank, а значит поле armor будет недоступно в этих объектах. Эту проблему можно решить следующим образом:

В абстрактом классе Tank объявляется абстрактная функция getArmor:

А в конкретных класса объявляется переменная armor и реализация функции getArmor:

Момент 2: в абстрактом классе задается конструктор, а в классе-наследнике UssrMediumTank он используется используя ключевое слово super(), при этом класс UssrMediumTank имеет свой конструктор с большим количеством полей. Это позволяет нам объединять общие параметры для всех классов-наследников в один общий абстрактный класс.

И сама главная программа:

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

И еще некоторые модификации. )

Необходима помощь более опытных людей (Java)

Всем доброго времени суток! Необходима помощь падавану, т.е мне. Вкратце суть: С недавних пор судьба решила что пора мне расти на профессиональном попроще программиста и заставила начать потихоньку обучатся Java. Ту инфу что накопал в сети(статейки на хабре, видеоуроки и т.д) по шурудил в целом и некоторые аспекты удалось усвоить (в активе 4 года технаря на техника-программиста(основной упор шел на Delphi) и 1.5 года работы сопровождающим (делфа+немного С#) так что базовые знания программиста имеются). Собственно столкнулся с тем что тяжеловато найти материал, проще говоря обычную методичку где будет реально описано подробно создание какого нибудь проекта. Реального проекта на основе которого можно было бы уже развиваться дальше. В этом плане плане понравились уроки Дударя с JavaFX на основе которых мне удалось самостоятельно реализовать некоторые модули АС которой занимается наше учреждение, но начальство планирует развивать Web направление поэтому интересно было бы, может кто знает какие-нибудь самоучители, методички, видеокурсы где пошагово все это можно посмотреть и повторить и потом уже с полученными знаниями накрутить своих фишек для усвоения материала? Особенно что касается разработки Web-сервиса как серверной части так и клиентской.

Ссылка на основную публикацию
Adblock
detector