воскресенье, 4 февраля 2018 г.

Swift 15. Type properties.

В 15 уроке рассмотрены свойства класса.
Домашнее задание:

/*
 1. Создать структуру “Описание файла” содержащую свойства:
 - путь к файлу
 - имя файла
 - максимальный размер файла на диске
 - путь к папке, содержащей этот файл
 - тип файла (скрытый или нет)
 - содержимое файла (можно просто симулировать контент)

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

 2. Создайте энум, который будет представлять некую цветовую гамму. Этот энум должен быть типа Int и как raw значение должен иметь соответствующее 3 байтное представление цвета. Добавьте в этот энум 3 свойства типа: количество цветов в гамме, начальный цвет и конечный цвет.

 3. Создайте класс человек, который будет содержать имя, фамилию, возраст, рост и вес. Добавьте несколько свойств непосредственно этому классу чтобы контролировать:
 - минимальный и максимальный возраст каждого объекта
 - минимальную и максимальную длину имени и фамилии
 - минимально возможный рост и вес
 - самое интересное, создайте свойство, которое будет содержать количество созданных объектов этого класса
 */

enum FileType {
    case visible
    case hidden
}

struct FileDescripton {
    static var maxFileSize = 3_000_000_000
    var path: String {
        return pathFolder + fileName
    }
    var fileSize: Int {
        didSet {
            if fileSize > FileDescripton.maxFileSize {
                fileSize = oldValue
            }
        }
    }
    var fileName: String
    var pathFolder: String
    var typeFile:FileType
    var contentFile: String
}

let fileDescripton = FileDescripton(fileSize: 10000, fileName: "test File", pathFolder: "c:\\", typeFile: .visible, contentFile: "Content")
print(fileDescripton.path)
/*
 2
 */
enum ColorScheme: Int {
    static var numberColor = 3
    static var firstColor = ColorScheme.red
    static var lastColor = ColorScheme.blue
    case red = 0xFF0000
    case green = 0x00FF00
    case blue = 0x0000FF
    
}

/*
 3
 */

print("\nN 3\n")
class Human {
    static let minAge = 0
    static let maxAge = 100
    static let minName = 1
    static let maxName = 50
    static let minWeight = 1.0
    static let maxWeight = 250.0
    static let minHeight = 30.0
    static let maxHeight = 250.0
    
    static var count = 0
    
    var firstName: String {
        didSet {
            if firstName.count < Human.minName || firstName.count > Human.maxName {
                firstName = oldValue
            }
        }
    }
    var lastName: String {
        didSet {
            if lastName.count < Human.minName || lastName.count > Human.maxName {
                lastName = oldValue
            }
        }
    }
    var age: Int {
        didSet {
            if age < Human.minAge || age > Human.maxAge {
                age = oldValue
            }
        }
    }
    
    var height: Double {
        didSet {
            if height < Human.minHeight || height > Human.maxHeight {
                height = oldValue
            }
        }
    }
    var weight: Double {
        didSet {
            if weight < Human.minWeight || height > Human.maxWeight {
                weight = oldValue
            }
        }
    }
    init(firstName: String, lastName: String, age: Int, height: Double, weight: Double) {
        self.firstName = firstName
        self.lastName = lastName
        self.age = age
        self.height = height
        self.weight = weight
        Human.count += 1
    }
    var description:String {
        return "Human:" + firstName + " " + lastName + ". Age: \(age). Height: \(height). Weight: \(weight)"
    }
}
var man = Human(firstName: "Alex", lastName: "T", age: 30, height: 165, weight: 65)
var man1 = Human(firstName: "Alex1", lastName: "T1", age: 20, height: 1700, weight: 50)
man.firstName = ""
man.lastName = "Ivanov"
man.lastName = " ;asldkjf;lksadjf;lkasfjkl;sadjf;lkasdj;lfjlsk;dajf;lsdakjf;llkasdjfl;klksd;afjl;skadflsadlkf"
man.height = 200
man.height = 270
man.weight = 0

print(man.description)
print(man1.description)

print("Human count: \(Human.count)")


Console:

c:\test File

N 3

Human:Alex Ivanov. Age: 30. Height: 200.0. Weight: 65.0
Human:Alex1 T1. Age: 20. Height: 1700.0. Weight: 50.0

Human count: 2

Комментариев нет:

Отправить комментарий