Java практическое задание: создание класса каталога вин с целью демонстрации ООП


При изучении языков программирования немалое внимание в современном обучении оказывается практической стороне вопроса. В данной статье расмотрим вариант решения одного практического задания на языке Java. Обращаю ваше внимание, что это именно вариант - исходный текст задания подразумевает множественное толкование. Однако, и на это тоже обращаю внимание: вариант правильный.

Итак, вот непосредственно текст самого практического задания на Java:

Используя принципы ООП и язык Java, опишите класс Wine , который в дальнейшем может быть применим при создании электронного каталога вин (сам электронный каталог вин вам пока реализовывать не нужно). Продумайте, какие поля и методы понадобятся классу Wine, для выполнения следующих функций:
1. Хранение информации о виде вина: название, торговая марка, страна, дата разлива, многострочное примечание (может быть любое количество строк). 2. Доступ (установка и получение значений) к хранимой информации.
3. Расчёт выдержки вина (текущая дата даётся как аргумент).
Отдельно разработайте вспомогательный класс, который демонстрирует работоспособность вашего класса.
Решение практического задания

Как видно из текста задания, потребуется два класса: основной и вспомогательный - для демонстрации. Основным у нас будет класс Wine, вспомогательным - Main. Класс Wine:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Wine {

	//1. Хранение информации о виде вина: название, торговая марка, страна, дата
		// разлива, многострочное примечание (может быть любое количество строк).	
	
	private String name;
	private String trademark;
	private String country;
	private String dateSpill;
	private String note;	
		 
	//Методы установки значений.
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setTrademark(String trademark) {
		this.trademark = trademark;
	}
	
	public void setCountry(String country) {
		this.country = country;
	}
	
	public void setDateSpill(String dateSpill) {
		this.dateSpill = dateSpill;
	}
	
	public void setNote(String note) {
		this.note = note;
	}
		 
	
	//методы получения значений
	public String getName() {
		 return this.name;
	}
	
	public String getTrademark() {
		 return this.trademark;
	}
	
	public String getCountry() {
		return this.country;
	}
	
	public String getDateSpill() {
		return this.dateSpill;
	}
	
	public String getNote() {
		return this.note;
	}

	
	//3. Расчёт выдержки вина (текущая дата даётся как аргумент).
     public long calculationOfExposure (String curDate) {
    	 
    	SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
 		Date date1 = null;
 		Date date2 = null;
 		try {
 		    date1 = format.parse(curDate);
 		    date2 = format.parse(dateSpill);
 		} catch (java.text.ParseException e) {
 		    e.printStackTrace();
 		}
 		long difference = date1.getTime() - date2.getTime();
 		long days =  difference / (24 * 60 * 60 * 1000);
    	
 		//возвращается число дней
    	 return days;
    	 
     }
		 
	}
	
Собственно говоря, все должно быть понятно из текста программы - имеющиеся комментарии подчеркивают моменты, которые необходимо реализовать в практическом задании. Отдельно стоит отметить только метод calculationOfExposure, с помощью которого рассчитывается время выдержки вина: здесь метод, как и необходимо принимает текущую дату (curDate), преобразовывает её и выдает разницу, прошедшую со дня разлива.

А это класс Main - вспомогательный класс, который демонстрирует работоспособность класса Wine:

	
	import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

public class Main {

	public static void main(String[] args) {
		
		//создаем экземпляр класса Wine
		Wine w1 = new Wine();
		
		//устанавливаем значения - информацию для экземпляра данного класса
		w1.setName("Hospices de Beaune");
		w1.setDateSpill("01/02/2009");
		w1.setCountry("Франция");
		w1.setTrademark("Дом Пьера Грубера");
		w1.setNote("какое-то примечание");
		
		//получаем информацию из класса
		String name = w1.getName();
		String country = w1.getCountry();
		String trademark = w1.getTrademark();
		String note = w1.getNote();
		
		//определение текущей даты
		Date d = new Date();
	    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	    df.setTimeZone(TimeZone.getTimeZone("EAT"));
		String d1 = df.format(d);
		
		//вызываем метод, определяющий выдержку вина
	    long days = w1.calculationOfExposure(d1);
	
		//и выводим результат на консоль		
		System.out.println("Выдержка вина под названием "+name+" составляет "+days+" дней" );
		System.out.println("Его торговая марка: "+trademark);
		System.out.println("Страна производства: "+country);
		System.out.println("Примечание: "+note);
	}
}
Этот файл просто демонстрация работы: создается экземляр класса, устанавливаются значения полей, затем эти же значения извлекаются и выводятся на консоль. В результате компиляции программы и запуска файла Main.class вы должны наблюдать в консоли примерно следующую картину:


Вот и все, цель достигнута: практическое задание выполнено. Скачать исходники и скомпилированные классы можно здесь. Также замечу, что запускать необходимо именно класс Main, так как класс Wine - он только хранит структуру, им можно пользоваться, но для работы требуются другие классы.

Если у вас есть какие-либо вопросы по написанию программ на языке Java или потребуется любая другая помощь по данному языку (практические, курсовые работы), то вы в любое время можете обратиться ко мне на почту up777up@yandex.ru или постучать в скайп up777up2. За очень умеренное денежное вознаграждение я вам с удовольствием помогу.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, java, практические задания




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



Кодирование и декодирование base64 на Java 8
Атрибуты продукта, или интерактив с помощью jQuery
Пример вычисления по формуле в C++