С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.11.2015
Сообщений: 21

Создание и использование конструкторов

07.01.2017, 00:15. Показов 1851. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется создать новый класс с именем DateFour, с несколькими конструкторами, а затем протестировать созданный класс, используя конструкторы.
Выполните действия:
1. Создайте новый файл с именем DateFour, аналогично DateThree в задании 2 и сохраните в файле DateFour.java.
2. Добавьте в DateFour конструктор без параметров (конструктор по-умолчанию), в котором полям присваиваются значения: day = 1, month = 1, year = 2009
3. Переименуйте метод setDate, чтобы он стал конструктором, принимающим параметры, проверяющим их корректность и затем присваивающий значения полям объекта.
4. Сохраните и скомпилируйте файл DateFour.java.
5. Скопируйте в проект и откройте файл DateFourTest.java. В методе main создайте две локальные переменные класса DateFour. Назовите переменные d1 и d2, где d1 создается с помощью конструктора без параметров, а d2 с помощью конструктора с тремя переменными.
6. В классе DateFourTest вызовите метод display для отображения дат, хранящихся в d1 и d2
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2017, 00:15
Ответы с готовыми решениями:

Использование нескольких конструкторов this() сразу
Допустим, имеем следующий код public Debug(Config cfg) { this.cfg = cfg; } public Debug(Device device) { ...

Использование конструкторов. Перегрузка конструкторов. Использование свойств
Помогите реализовать свойства, позволяющие осуществить проверку на допустимые значения для данных класса. using System; using...

Использование конструкторов и деструкторов
Решить в консольном режиме: Дан набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если...

8
58 / 57 / 47
Регистрация: 31.10.2016
Сообщений: 182
07.01.2017, 06:23
Цитата Сообщение от NeK1TG Посмотреть сообщение
аналогично DateThree в задании 2
Сек, ток задание 2 открою, а то чет забыл его.
1
0 / 0 / 0
Регистрация: 07.11.2015
Сообщений: 21
07.01.2017, 15:48  [ТС]
доступ к инкапсулированным атрибутам класса. Создается класс с атрибутами закрытого доступа private. Затем добавляется код для осуществления доступа к эти атрибутам.
Выполните действия:
1. Создайте новый класс с именем DateThree и сохраните в DateThree.java
2. DateThree должен иметь те же поля, что и класс DateTwo.
3. Добавьте следующие методы в класс DateThree:
a. Методы чтения (get) и записи (set) для всех трех полей. Например:

Java
1
2
3
4
5
6
7
public void setDay(int d) {
    day = d;
}
 
public int getDay() {
    return day;
  }
b. Метод для установки даты setDate – он должен принимать три параметра типа int для присвоения значений трем полям класса DateThree – day, month, year соответственно.
Прежде, чем присваивать значения, необходимо провести проверку корректности заданных параметров. Так, день должен находиться в диапазоне от 1 до 30, или 31, или 28, или 29; месяц должен быть в диапазоне 1 – 12, а год от 1000 – 10000. Также не должно быть назначения дат типа 30 февраля или 31 апреля. В случае если ошибка обнаружена – должно выдаваться соответствующее сообщение.
Примечание!: используйте сочетания switch и if-else для проверки параметров.
c. Метод displayDate, который выводит на экран текущую дату. Например так:
Сегодня : 14.08.2009г.
4. Сохраните и скомпилируйте файл DateThree.java
0
58 / 57 / 47
Регистрация: 31.10.2016
Сообщений: 182
07.01.2017, 20:53
DateFourTest
Java
1
2
3
4
5
6
7
8
9
10
package datefour;
 
public class DateFourTest {
    
    public static void main(String[] args) {
        DateFour d1 = new DateFour();
        DateFour d2 = new DateFour(29, 2, 2011);
        d2.displayDate();
    }
}
DateFour
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package datefour;
 
public class DateFour {
    private int day;
    private int month;
    private int year;
    
    public DateFour() {
        this.day = 1;
        this.month = 1;
        this.year = 2009;
    }
    
    public DateFour(int d, int m, int y) {
        if(checkDate(d, m, y)) {
            this.day = d;
            this.month = m;
            this.year = y;
        }
        else {
            this.day = 1;
            this.month = 1;
            this.year = 2009;
        }
    }
    
    public int getDay() {
        return this.day;
    }
    
    public int getMonth() {
        return this.month;
    }
    
    public int getYear() {
        return this.year;
    }
    
    public void setDay(int d) {
        if(checkDate(d, this.month, this.year))
            this.day = d;
    }
    
    public void setMonth(int m) {
        if(checkDate(this.day, m, this.year))
            this.month = m;
    }
    
    public void setYear(int y) {
        if(checkDate(this.day, this.month, y))
            this.year = y;
    }
    
    //проверка корректности даты
    private boolean checkDate(int d, int m, int y) {
        if(y < 1000 || y > 10000) {//проверяем год
            System.out.println("Год должен быть в диапазоне 1000..10000");
            return false;
        }
        else {
            if(m < 1 || m > 12) {//затем месяц
                System.out.println("Месяц должен быть в диапазоне 1..12");
                return false;
            }
            else {
                if(d < 1 || d > 31) {
                    System.out.println("День должен быть в диапазоне 1..31");
                    return false;
                }
                switch(d) {//затем день
                    case 29: {//февраль и високосность
                        if(m == 2 && !isLeap(y)) {
                            System.out.println("Сейчас не високосный год, чтобы в феврале было 29 дней");
                            return false;
                        }
                    }   break;
                    case 31: {
                        if(m != 1 && m != 3 && m != 5 && m != 7 && m != 8 && m != 10 && m != 12) {
                            System.out.println("В этом месяце не 31 день");
                            return false;
                        }
                    }   break;
                    default:
                        break;
                }
            }
        }
        return true;
    }
    
    private boolean isLeap(int y) {//високлсный ли год
        return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
    }
    
    public void displayDate() {
        System.out.println(this);
    }
    
    @Override
    public String toString() {
        return this.day + ":" + this.month + ":" + this.year + "г";
    }
}
1
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 6
23.08.2017, 12:02
Цитата Сообщение от A3IPIB Посмотреть сообщение
DateFourTest
Java
1
2
3
4
5
6
7
8
9
10
package datefour;
 
public class DateFourTest {
    
    public static void main(String[] args) {
        DateFour d1 = new DateFour();
        DateFour d2 = new DateFour(29, 2, 2011);
        d2.displayDate();
    }
}
DateFour
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package datefour;
 
public class DateFour {
    private int day;
    private int month;
    private int year;
    
    public DateFour() {
        this.day = 1;
        this.month = 1;
        this.year = 2009;
    }
    
    public DateFour(int d, int m, int y) {
        if(checkDate(d, m, y)) {
            this.day = d;
            this.month = m;
            this.year = y;
        }
        else {
            this.day = 1;
            this.month = 1;
            this.year = 2009;
        }
    }
    
    public int getDay() {
        return this.day;
    }
    
    public int getMonth() {
        return this.month;
    }
    
    public int getYear() {
        return this.year;
    }
    
    public void setDay(int d) {
        if(checkDate(d, this.month, this.year))
            this.day = d;
    }
    
    public void setMonth(int m) {
        if(checkDate(this.day, m, this.year))
            this.month = m;
    }
    
    public void setYear(int y) {
        if(checkDate(this.day, this.month, y))
            this.year = y;
    }
    
    //проверка корректности даты
    private boolean checkDate(int d, int m, int y) {
        if(y < 1000 || y > 10000) {//проверяем год
            System.out.println("Год должен быть в диапазоне 1000..10000");
            return false;
        }
        else {
            if(m < 1 || m > 12) {//затем месяц
                System.out.println("Месяц должен быть в диапазоне 1..12");
                return false;
            }
            else {
                if(d < 1 || d > 31) {
                    System.out.println("День должен быть в диапазоне 1..31");
                    return false;
                }
                switch(d) {//затем день
                    case 29: {//февраль и високосность
                        if(m == 2 && !isLeap(y)) {
                            System.out.println("Сейчас не високосный год, чтобы в феврале было 29 дней");
                            return false;
                        }
                    }   break;
                    case 31: {
                        if(m != 1 && m != 3 && m != 5 && m != 7 && m != 8 && m != 10 && m != 12) {
                            System.out.println("В этом месяце не 31 день");
                            return false;
                        }
                    }   break;
                    default:
                        break;
                }
            }
        }
        return true;
    }
    
    private boolean isLeap(int y) {//високлсный ли год
        return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
    }
    
    public void displayDate() {
        System.out.println(this);
    }
    
    @Override
    public String toString() {
        return this.day + ":" + this.month + ":" + this.year + "г";
    }
}
Здравсвуйте A3IPIB , а можно еще у вас попросить DateThree и DateThreeTest посмотреть из тех же заданий ? Если сохранились конечно
0
58 / 57 / 47
Регистрация: 31.10.2016
Сообщений: 182
23.08.2017, 14:57
h4x00rs, у меня и не было datethree, делал по описанию выше.
Из первого поста можно понять что откатить в DateFour чтобы получить из него DateThree.
1. Оставить один конструктор без параметров, который не инициализирует поля (но это не точно)
2. Конструктор с параметрами переименовать обратно в setDate
Походу как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package datethree;
 
public class DateThree {
    private int day;
    private int month;
    private int year;
    
    public DateThree() { }
    
    public void setDate(int d, int m, int y) {
        if(checkDate(d, m, y)) {
            this.day = d;
            this.month = m;
            this.year = y;
        }
    }
    
    public int getDay() {
        return this.day;
    }
    
    public int getMonth() {
        return this.month;
    }
    
    public int getYear() {
        return this.year;
    }
    
    public void setDay(int d) {
        if(checkDate(d, this.month, this.year))
            this.day = d;
    }
    
    public void setMonth(int m) {
        if(checkDate(this.day, m, this.year))
            this.month = m;
    }
    
    public void setYear(int y) {
        if(checkDate(this.day, this.month, y))
            this.year = y;
    }
    
    //проверка корректности даты
    private boolean checkDate(int d, int m, int y) {
        if(y < 1000 || y > 10000) {//проверяем год
            System.out.println("Год должен быть в диапазоне 1000..10000");
            return false;
        }
        else {
            if(m < 1 || m > 12) {//затем месяц
                System.out.println("Месяц должен быть в диапазоне 1..12");
                return false;
            }
            else {
                if(d < 1 || d > 31) {
                    System.out.println("День должен быть в диапазоне 1..31");
                    return false;
                }
                switch(d) {//затем день
                    case 29: {//февраль и високосность
                        if(m == 2 && !isLeap(y)) {
                            System.out.println("Сейчас не високосный год, чтобы в феврале было 29 дней");
                            return false;
                        }
                    }   break;
                    case 31: {
                        if(m != 1 && m != 3 && m != 5 && m != 7 && m != 8 && m != 10 && m != 12) {
                            System.out.println("В этом месяце не 31 день");
                            return false;
                        }
                    }   break;
                    default:
                        break;
                }
            }
        }
        return true;
    }
    
    private boolean isLeap(int y) {//високлсный ли год
        return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
    }
    
    public void displayDate() {
        System.out.println(this);
    }
    
    @Override
    public String toString() {
        return this.day + ":" + this.month + ":" + this.year + "г";
    }
}
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 6
05.09.2017, 09:54
A3IPIB, немогу в ЛС вам написать, а может у вас остались последующие Лабораторные с номера 9 и дальше, был бы признателен если поделитесь, чтобы было куда подглянуть...
0
58 / 57 / 47
Регистрация: 31.10.2016
Сообщений: 182
05.09.2017, 11:03
h4x00rs, у меня не было и нет этих лаб
либо запили новую тему с ними, либо набери еще 3 сообщения на форуме и в ЛС скинь
P.S: должно быть 5 сообщений и более, чтобы личка стала доступна, пруф
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 6
06.09.2017, 10:09
A3IPIB, Ок понял, я видимо что-то нетак прочитал!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2017, 10:09
Помогаю со студенческими работами здесь

Использование функций конструкторов
есть ли разница как использовать функцию конструктор с оператором new или без?

Использование конструкторов и деструкторов
Решить задачу в консольном режиме Даны целые числа K, N и набор из N целых чисел. Если в наборе присутствует число, меньшее K, то...

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

Наследование классов и использование конструкторов
Привет всем. У меня есть код, который нужно дополнить. class Skript { public: Skript(string v) : text(v) { } ...

Правильное использование конструкторов и деструкторов
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class Worker {public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru