section1에서 만든 소스를 가져다가 어플 형식으로 다시 만들어 보았다.

소스는 여기에 -> https://github.com/SKANBY/VisualBookManager


결과창 캡처

강의를 따라하면서 간단하게 콘솔창으로 결과를 확인할 수 있는 프로그램을 만들어 보았다.

소스는 여기에 -> https://github.com/SKANBY/BookManager


결과 콘솔창


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import UIKit
 
//옵셔널 자체가 하나의 자료형이라고 볼 수 있다
class Optional{
    var optionalString:String= "Hello"    //nil값도 들어갈 수 있다
    
    func hello(){
        print(optionalString)   //Optional("Hello")
        print(optionalString!)  //Hello -> unwrapping 해야한다
    }
}
 
var option = Optional()
option.hello()



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import UIKit
 
var name = ["Park","Choi","Kim","Lee"]
var age = [3,4,5,6]
var height = [40,50,60,70]
 
print(name[0],age[0],height[0]) //Park 3 40
//위와 같은 경우는 비 효율적임
 
 
struct Student {    //구조체는 상속이 안됨
    var name:String //stored property
    var age:Int
    var height:Int
}
 
var student1 = Student(name: "Park", age: 3, height: 40)
var student2 = Student(name: "Choi", age: 4, height: 50)
 
print(student1.name,student1.age,student1.height)   //Park 3 40



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
import UIKit
 
class Vehicle{
    var currentSpeed = 0.0  //stored property
    var description:String//computed property : getter의 역할
        return "traveling at \(currentSpeed) miles per hour"
    }
    
    func makeNoise(){
        print("noiseless")
    }
}
 
let someVehicle = Vehicle();    //인스턴스 생성
someVehicle.currentSpeed = 1.0
print("Vehicle : \(someVehicle.description)")   //Vehicle : traveling at 1.0 miles per hour
 
 
//상속
class Bicycle:Vehicle{
    var hasBasket = false
}
 
let bicycle = Bicycle()
bicycle.hasBasket = true
 
bicycle.currentSpeed = 15.0
print("Bicycle : \(bicycle.description)")   //Bicycle : traveling at 15.0 miles per hour
 
 
class Tandem:Bicycle{   //*Tandem = 이인용 자전거
    var currentNumberOfPassengers = 0  //stored property
    override var description:String//computed property, override - 위에꺼랑 겹쳐서 재정의
        return "traveling at \(currentSpeed) miles per hour, number of passenger : \(currentNumberOfPassengers), 
                basket : \(hasBasket)"
    }
}
 
let tandem = Tandem()
tandem.hasBasket = true
tandem.currentNumberOfPassengers = 2
tandem.currentSpeed = 22.0
 
print("Tandem : \(tandem.description)")
//Tandem : traveling at 22.0 miles per hour, number of passenger : 2, basket : true
 
 
class Train:Vehicle{
    override func makeNoise() {
        print("Choo Choo")
    }
}
 
let train = Train()
train.makeNoise()   //Choo Choo
 
class Car:Vehicle{
    var gear = 1
    override var description:String//computed property : getter의 역할
        return super.description + " in gear \(gear)"   //super = 상위 클래스
    }
}
 
let car = Car()
car.currentSpeed = 25.0
car.gear = 3
print("Car : \(car.description)")   //Car : traveling at 25.0 miles per hour in gear 3
 
 
//Property Observer : 속성값을 지켜보면서 속성값의 변화에 반응
//- willSet : 값이 저장되기 전에 호출되는 Property Observer
//- didSet : 새로운 값이 저장된 후, 바로 호출되는 Property Observer
class AutomaticCar:Car{
    override var currentSpeed: Double{
        didSet{ //값이 설정이 되면 반응
            gear = Int(currentSpeed / 10+ 1
        }
    }
}
 
let automatic = AutomaticCar()
automatic.currentSpeed = 30.0
print("AutomaticCar : \(automatic.description)")    //AutomaticCar : traveling at 30.0 miles per hour in gear 4



'프로그래밍 > Swift | iOS' 카테고리의 다른 글

[Swift3 & iOS10] optionalValue  (0) 2017.12.02
[Swift3 & iOS10] struct(구조체)  (0) 2017.12.01
[Swift3 & iOS10] function  (0) 2017.12.01
[Swift3 & iOS10] 조건문 if,switch  (0) 2017.12.01
[Swift3 & iOS10] 반복문 for,while  (0) 2017.11.30