금주 강의는 class를 좀 더 심화적으로 배우고, protocol, enum등을 실습코드들을 통해 배워보았다.
실습코드를 조금씩 변형하여 실습하였다. 코드는 다음과 같다.
override
class Animal{
var age : Int =1
var weight : Double =3.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
init(age: Int, weight : Double){
self.age = age
self.weight = weight
}
}
class Cat : Animal {
var name : String ="김고양이"
override func display() { //override를 제거하면 작동하지 않는다.
print("이름=\(name), 나이=\(age), 몸무게=\(weight)")
}
init(age: Int, weight : Double, name : String){
super.init(age:age, weight:weight)
self.name = name
}
}
var kim : Animal = Animal(age:10, weight:20.5)
kim.display() //나이=10, 몸무게=20.5
var lee : Cat = Cat(age:20,weight:65.2,name: "리고양이")
lee.display() //이름=리고양이, 나이=20, 몸무게=65.2
과제 : 클래스 하나 찾아서 간단 도움말 만들기
UI 라벨
하나 이상의 정보 텍스트 줄이 표시되는 뷰입니다.
레이블 텍스트의 전체 모양을 구성하고 특성이 있는 문자열을 사용하여 텍스트 내의 하위 문자열 모양을 사용자 지정할 수 있습니다. 인터페이스에 프로그래밍 방식으로 또는 인터페이스 빌더의 특성 검사기와 함께 레이블을 추가하고 사용자 지정합니다.
예제
let frame = CGRect(x: 0, y: 0, width: 200, height: 21)
let label = UILabel(frame: frame)
view.addSubview(label)
//레이블 프레임으로 초기화?
let stringVar ="basic String var"
label.text = stringVar
//문자열 변수로 지정해 레이블에 넣기.
label.textColor = UIColor.red
label.textColor = UIColor(red: 64.0 /255.0, green: 88.0 /255.0, blue: 41.0 /225.0, alpha: 1)
//레이블 색상 지정
주요 함수
func text Rect (for Bounds : CGRect, limited To Number Of Lines : Int) -> CGRect
레이블의 텍스트에 대한 도면 사각형을 반환합니다.
지정된 사각형에 레이블의 텍스트 또는 그림자를 그립니다.
extension
extension Double {
var squared : Double { //계산 프로퍼티
return self *self
}
}
let myValue: Double =3.0
print(myValue.squared) //9.0
print(2.0.squared) //4.0
extension Int {
var Plus : Int {
return self +self
}
}
let myIntValue : Int =4
print(myIntValue.Plus) //8
print(5.Plus) //10
protocol 정의, 채택, 준수
protocol Runnable { //대리하고 싶은 함수 목록 작성
var x : Int {get set} //읽기와 쓰기 가능 프로퍼티,{get}은 읽기 전용
//property in protocol must have explicit { get } or { get set } specifier
func run() //메서드는 선언만 있음
}
class Man : Runnable { //채택, adopt
var x : Int =1 //준수, conform
func run(){print("달린다~")} //준수, conform
}
class Cat : Runnable {
var x : Int =3
func run() {print("고양이 달려~")}
}
let nabi = Cat()
nabi.run() //고양이 달려~
let minchul = Man()
minchul.run() //달린다~
과제
protocol B {
func bb(value : Int) ->Int
}
class C {
}
class A : C,B{
func bb(value : Int) ->Int {
return value *2
}
}
let a = A()
print(a.bb(value:3))
중간고사 대비 과제
protocol B {
func bb(value : Int) ->Int
}
class C {
func Alpha(x: Int){
print(x +1)
}
func Alpha(x: Int, y: Int){
print(x +y)
} //overloading
}
class A : C,B{
func bb(value : Int) ->Int {
return value *2
}
override func Alpha(x: Int, y: Int){
print(x *y)
} //overriding
}
let a = A()
print(a.bb(value:3)) //6
a.Alpha(x:4) //5
a.Alpha(x:4, y:6) //24
열거형 정의
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
} //하나의 case문에 멤버들 나열하는 것도 가능
enum Compass {
case North
case South
case East
case West
}
print(Compass.North) //열거형명.멤버 //North
var direction = Compass.West
direction = .East //두번째 부터는 열거형명 생략 가능
print(direction, type(of:direction)) //East Compass
열거형 멤버별 기능 정의
enum Compass {
case North
case South
case East
case West
}
var direction : Compass
direction = .South //남
switch direction {
case .North:
print("북")
case .South:
print("남")
case .East:
print("동")
case .West:
print("서")
}
'대학교 - 강의 > iOS프로그래밍기초' 카테고리의 다른 글
| iOS프로그래밍기초 10주차 레포트 (0) | 2021.11.05 |
|---|---|
| iOS프로그래밍기초 9주차 레포트 (0) | 2021.10.31 |
| iOS프로그래밍기초 6주차 레포트 (0) | 2021.10.08 |
| iOS프로그래밍기초 5주차 레포트 (0) | 2021.10.02 |
| iOS프로그래밍기초 4주차 레포트 (0) | 2021.09.26 |