мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| java:vtoroj_semestr [19/01/2015 09:24] – создано ybezrukov | java:vtoroj_semestr [09/02/2015 12:20] (текущий) – ybezrukov | ||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| - | ===== Задание 1. Тур де Франс ===== | + | ===== Тур де Франс ===== |
| Наша задача состоит в том, чтобы написать красивую объектно-ориентированную программу, | Наша задача состоит в том, чтобы написать красивую объектно-ориентированную программу, | ||
| - | Файл 1. tdf14_teams.txt | + | * {{: |
| + | * {{: | ||
| + | * {{: | ||
| + | |||
| + | **Файл 1** tdf14_teams.txt | ||
| В нем перечислены участники и команды. В каждой строке файла хранится запись вида: | В нем перечислены участники и команды. В каждой строке файла хранится запись вида: | ||
| Строка 22: | Строка 26: | ||
| Каждый участник однозначно идентифицируется по своему имени, а команда по названию (т.е. дубликатов нет) | Каждый участник однозначно идентифицируется по своему имени, а команда по названию (т.е. дубликатов нет) | ||
| - | Файл 2. tdf14_stage.txt | + | **Файл 2** tdf14_stages.txt |
| В нем перечислены этапы гонки в виде: | В нем перечислены этапы гонки в виде: | ||
| Строка 36: | Строка 40: | ||
| </ | </ | ||
| - | Файл 3. tdf14_ranks.txt | + | **Файл 3** tdf14_ranks.txt |
| В этом файле содержатся рейтинги участников на разных этапах. Каждая строка содержит следующее: | В этом файле содержатся рейтинги участников на разных этапах. Каждая строка содержит следующее: | ||
| Строка 45: | Строка 49: | ||
| Участники, | Участники, | ||
| + | |||
| + | Пример строки | ||
| + | |||
| + | < | ||
| + | 1 198 76 04:58:16 | ||
| + | </ | ||
| Класс-обертка для чтения из файла прилагается. | Класс-обертка для чтения из файла прилагается. | ||
| Строка 108: | Строка 118: | ||
| Работа делится на две части. Первая заключается в создании системы классов и объектов для представления данных и начальном заполнении их информацией из файла. Вторая в статистической обработке данных. | Работа делится на две части. Первая заключается в создании системы классов и объектов для представления данных и начальном заполнении их информацией из файла. Вторая в статистической обработке данных. | ||
| - | Часть 1. | + | ==== Часть 1 ==== |
| Наша задача состоит в обработке файла tdf14_teams.txt. Для этого требуется создать следующие 4 класса. | Наша задача состоит в обработке файла tdf14_teams.txt. Для этого требуется создать следующие 4 класса. | ||
| - | 1. Racer. У нашего участника есть имя, фамилия, | + | * **Racer** У нашего участника есть имя, фамилия, |
| - | 2. Team. Команда имеет название и список участников. Должны быть реализованы следующие методы: | + | <code java> |
| - | - Team(String name) конструктор, | + | public class Racer { |
| - | - void insert(Racer racer) добавляет гонщика в команду | + | String name; |
| - | - String getName() геттер для названия команды | + | String surname; |
| - | - int numberOfRacers() возвращает количество гонщиков в команде | + | String nationality; |
| - | - Racer getRacers(int i) возвращает гонщика по номеру. Нумерация идет с нуля. | + | int yearOfBirth; |
| - | - int totalAge(int year) возвращает суммарный возраст участников. Год передается в качестве параметра. | + | int number; |
| - | 3. TeamsList. Класс для списка команд. Должны быть реализованы следующие методы: | + | |
| - | - TeamsList() конструктор, | + | public int getNumber() { |
| - | - void insert(Team team) добавляет команду в общий список. | + | return number; |
| - | - Team getTeam(String teamName) возвращает команду по ее названию. Если такой команды не найдено, | + | } |
| - | - int numberOfTeams() возвращает количество команд | + | |
| - | - Team getTeam(int i) возвращает i-ю команду. Нумерация с нуля. | + | public void setNumber(int number) { |
| - | 4. TourDeFrance главный класс программы, | + | this.number = number; |
| + | } | ||
| + | |||
| + | public int getYearOfBirth() { | ||
| + | return yearOfBirth; | ||
| + | } | ||
| + | |||
| + | public void setYearOfBirth(int year) { | ||
| + | this.yearOfBirth = year; | ||
| + | } | ||
| + | |||
| + | public String getName() { | ||
| + | return name; | ||
| + | } | ||
| + | |||
| + | public void setName(String name) { | ||
| + | this.name = name; | ||
| + | } | ||
| + | |||
| + | public String getSurname() { | ||
| + | return this.suername; | ||
| + | } | ||
| + | |||
| + | public void setSurname(String surname) { | ||
| + | this.surname = surname; | ||
| + | } | ||
| + | |||
| + | public String getNationality() { | ||
| + | return this.nationality; | ||
| + | } | ||
| + | |||
| + | public void setNationality(String nationality) { | ||
| + | this.nationality = nationality; | ||
| + | } | ||
| + | |||
| + | public int age(int year) { | ||
| + | return year - yearOfBirth; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | * **Team** | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | <code java> | ||
| + | public class Team { | ||
| + | String name; | ||
| + | ArrayList< | ||
| + | |||
| + | public Team(String name) { | ||
| + | this.name = name; | ||
| + | racers = new ArrayList< | ||
| + | } | ||
| + | |||
| + | public void insert(Racer racer) { | ||
| + | racers.add(racer); | ||
| + | } | ||
| + | |||
| + | public String getName() { | ||
| + | return this.name; | ||
| + | } | ||
| + | |||
| + | public int numberOfRacers() { | ||
| + | return racers.size(); | ||
| + | } | ||
| + | |||
| + | public Racer getRacers(int i) { | ||
| + | return racers.get(i); | ||
| + | } | ||
| + | |||
| + | public int totalAge(int year) { | ||
| + | int sum = 0; | ||
| + | for(Racer racer : racers) { | ||
| + | sum = sum + racer.totalAge(year); | ||
| + | } | ||
| + | return sum; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | * **TeamsList** | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | * **TourDeFrance** главный класс программы, | ||
| <code java> | <code java> | ||
| Строка 136: | Строка 235: | ||
| * @param teamsList список команд, | * @param teamsList список команд, | ||
| */ | */ | ||
| - | public static void parceTeamLine(String line, ListeEquipe | + | public static void parceTeamLine(String line, TeamsList |
| // Элементы в строках нашего файла разделени знаками табуляции, | // Элементы в строках нашего файла разделени знаками табуляции, | ||
| // и будем использовать чтобы отличить один элемет от другого. | // и будем использовать чтобы отличить один элемет от другого. | ||
| Строка 162: | Строка 261: | ||
| * В противном случае возвращается false | * В противном случае возвращается false | ||
| */ | */ | ||
| - | public static boolean createTeams(String fileName, | + | public static boolean createTeams(String fileName, |
| // Объект, | // Объект, | ||
| ReadData reader = new ReadData(); | ReadData reader = new ReadData(); | ||
| Строка 205: | Строка 304: | ||
| </ | </ | ||
| + | |||
| + | ==== Часть 2 ==== | ||
| + | |||
| + | Задача – это обработать файлы | ||
| + | - Какова общая дистанция, | ||
| + | - Найти самый длинный и самый короткий этапы | ||
| + | - Кто выиграл этап, который начинается в городе Mulhouse? Кто выиграл этап, который заканчивается в городе Risoul? Кто выиграл этап 14 июля? | ||
| + | - Какова тройка победителей 2014 года? Какова общая таблица зачета? | ||
| + | - Какое общее время потребовалось участникам команды FDJ.FR на завершение гонки? И какое общее время, для 3 лучших каждого этапа? | ||
| + | - Кто из участников по своей воле сошел с дистанции и на каких этапах? | ||
| + | - На каких этапах среднее время участников, | ||
| + | - Кто из участников набрал наибольшую среднюю скорость на том или ином этапе, и на каком этапе? | ||
| + | - В какой команде участники двигаются с одинаковой скоростью (т.е. время на этап примерно одинаковое)? | ||
| + | |||