Задачи на ООП в Go. Часть 6
Дан следующий код:
type User struct { name, surn string }
func (u *User) notEmpty(s string) bool { return len(s) > 0 }
func (u *User) SetName(name string) { if u.notEmpty(name) { u.name = name } }
func (u *User) GetName() string { return u.name }
type Employee struct { User }
func (e *Employee) SetSurn(surn string) { if e.notEmpty(surn) { e.surn = surn } }
func (e *Employee) GetSurn() string { return e.surn }
Сделайте метод notEmpty неэкспортируемым и доступным только внутри пакета (он уже неэкспортируем — объясните почему).
Сделайте интерфейс Figure с методами Area() и Perimeter().
Реализуйте его для Circle, Rectangle и Square.
Добавьте в User метод IncreaseRevenue через интерфейс.
Реализуйте его в Employee и Student (embedding).
Сделайте функцию printFigure(f Figure), выводящую площадь и периметр.
Сделайте struct Num с полями Num1 и Num2.
Инициализируйте 2 и 3, выведите сумму.
Сделайте struct Num с неэкспортируемыми полями num1, num2
и геттерами GetNum1(), GetNum2().
Сделайте метод (n Num) Sum() int, возвращающий сумму полей.
Дан следующий код:
type Math struct{}
func (m Math) Sum(a, b int) int {
return a + b
}
func (m Math) Product(a, b int) int {
return a * b
}
Переделайте методы в функции пакета Sum(a, b int) и Product(a, b int).
Дан следующий код:
type ArraySumHelper struct{}
func (h ArraySumHelper) GetSum1(arr []int) int { return h.getSum(arr, 1) }
func (h ArraySumHelper) getSum(arr []int, power int) int { return 0 }
Сделайте методы Sum1 … Sum4 и вынесите общую логику в неэкспортируемый метод.
Сделайте счётчик с неэкспортируемым полем count
и методом Value() int для чтения значения.