SlideShare a Scribd company logo
1 of 23
Download to read offline
Properties & Method
about Swift
창원대학교 정보통신공학과
Mobile-X 정경원
지도교수 : 박동규
2015.1.20
목차
• 저장 속성( Stored Properties)
• 연산 속성(Computed Properties)
• 메소드(Methods)
저장 속성(Stroed Properties)
• 특정 클래스와 구조체의 인스턴스에 저장되는 상수나 변수
• var 키워드로 선언되면 변수 저장 속성.
• let 키워드로 선언되면 상수 저장 속성.
저장 속성(Stroed Properties)
저장 속성(Stroed Properties)
구조체와 클래스의 차이점.
Lazy 저장 속성
• lazy 저장속성은 이 속성이 처음으로 사용되어 질 때까지 초기화
되지 않음.
• 저장 속성 앞에 lazy를 써줌으로써 lazy저장속성을 표시.
• 반드시 var 키워드로 선언된 변수에만 적용가능.
• 상수는 항상 초기 값을 가져야 하기 때문에 상수 속성으로는 선언
할 수 없다.
• 복잡한 클래스의 불필요한 인스턴스 생성을 피하기 위해, lazy 저
장 속성의 사용이 유용함.
Lazy 저장 속성
연산 속성(Computed Properties)
• 저장속성, 클래스, 구조체, 열거형은 연산 속성을 정의할 수 있음
• 연산속성은 실제로 값을 저장하지는 않고, 다른 속성이나 값들
을 간접적으로 접근하여 값을 조회하거나 수정할 수 있는 getter
와 선택적인 setter를 제공.
연산 속성(Computed Properties)
Custom Property
연산 속성(Computed Properties)
연산속성의 setter에 새로운 값이 저장될 이름을 명시해 주지
않으면 자동으로 생성되는 기본값 newValue를 사용할 수 있다.
메소드(Method)
• 기존의 객체지향언어 메소드의 형태와 사용법이 매우 유사.
• dot( . )을 이용해 접근.
• 특정 클래스, 구조체, 혹은 열거형의 인스턴스에 속하는 함수
• 인스턴스 속성에 접근하고 수정하는 방법이나, 인스턴스의
용도에 관련된 기능을 지원.
인스턴스 메소드
외부 파라미터 명
• 함수에 있는 파라미터가 정확하게 어떤 의미를 가지는지 사
용자가 명확하게 알 수 있도록 파라미터의 이름을 지어주는
것.
• 별명이라고 생각하면됨.
• 변수명 앞에 선언
• 함수 내에서 사용불가. 외부에서만 사용가능.
외부 파라미터 명
Shorthand 외부 파라미터 명
• 함수 파라미터에 외부파라미터를 사용하고, 그 외부파라미터
명이 함수 내부에서도 그대로 사용되길 원한다면, 함수 파라
미터명 앞에 해쉬심볼(#)을 써주면 된다.
• 즉, 외부파라미터명과 내부파라미터명을 따로 사용할 필요없
이 하나의 이름으로 외부 내부에서 동시에 사용할 수 있도록
해주는 기능.
Shorthand 외부 파라미터 명
• 모든 인스턴스 타입은 인스턴스 자체와 동일한 self라는
명시적 프로퍼티를 가지고 있음.
• 이 명시적 self 프로퍼티는 자신이 속한 인스턴스 내에서
현재 인스턴스를 참조 하는데 사용.
• 인스턴스 메소드 파라미터와 인스턴스 속성의 프로퍼티
가 동일한 이름을 가졌을 때 사용해서 구분.
• self는 다른 객체지향 언어에서 this와 같은 의미. 즉, 자
기자신을 가리킴.
The Self Property
The Self Property
self가 없다면 x는 둘다 메소드
파라미터를 참조한다고 여김.
• 구조체와 열거형은 값타입이라서 인스턴스 생성후에는
메소드를 통해서 해당 인스턴스의 속성을 변경할 수 없는
데 이를 가능하게 하는 방법.
• mutating이라는 키워드를 인스턴스 메소드 앞에 선언하
게 되면 이 메소드를 통해서 속성 변경 가능.
Mutating
Mutating
함수 이름만으로 첫번째 인수값의 용도가 명확해지기 때문에
외부 파라미터에 대해서 정의 할 필요가 없다.
하지만 두 번째 인수는 메소드가 호출되었을때, 그 용도를 명확
히 하기 위해서 외부파라미터 이름을 규정함.
Mutating
구조체 인스턴스가 상수 타입의 변수에 할당 될때
는 mutating 을 사용 못함.
Thank you
참고 자료
• http://blog.naver.com/seotaji/220136040885
• http://blog.naver.com/seotaji/220134412908
• http://swift.leantra.kr/

More Related Content

What's hot

Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritanceYong Joon Moon
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++Min-soo Park
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understandingYong Joon Moon
 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic functionYong Joon Moon
 
Scala companion object
Scala companion objectScala companion object
Scala companion objectYong Joon Moon
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
M1 2 1
M1 2 1M1 2 1
M1 2 1nexthw
 
10 swift 열거형구조체클래스
10 swift 열거형구조체클래스10 swift 열거형구조체클래스
10 swift 열거형구조체클래스Changwon National University
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Hyun Sung Yoon
 
[Swift] Properties
[Swift] Properties[Swift] Properties
[Swift] PropertiesBill Kim
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
Swift5 vs objective c
Swift5 vs objective cSwift5 vs objective c
Swift5 vs objective cBill Kim
 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class patternYong Joon Moon
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍MinGeun Park
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2세빈 정
 

What's hot (20)

Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritance
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding
 
Scala namespace scope
Scala namespace scopeScala namespace scope
Scala namespace scope
 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax function
 
Scala type args
Scala type argsScala type args
Scala type args
 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic function
 
Scala companion object
Scala companion objectScala companion object
Scala companion object
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
M1 2 1
M1 2 1M1 2 1
M1 2 1
 
10 swift 열거형구조체클래스
10 swift 열거형구조체클래스10 swift 열거형구조체클래스
10 swift 열거형구조체클래스
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)
 
[Swift] Properties
[Swift] Properties[Swift] Properties
[Swift] Properties
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
Swift5 vs objective c
Swift5 vs objective cSwift5 vs objective c
Swift5 vs objective c
 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class pattern
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 

Similar to Swift세미나(속성(properties), 메소드(method))

[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6Injae Lee
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Chris Ohk
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
Swift 3 Programming for iOS : class and structure
Swift 3 Programming for iOS : class and structureSwift 3 Programming for iOS : class and structure
Swift 3 Programming for iOS : class and structureKwang Woo NAM
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿해강
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8문익 장
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)Mark Lee
 
Effective c++ 정리 1~2
Effective c++ 정리 1~2Effective c++ 정리 1~2
Effective c++ 정리 1~2Injae Lee
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성흥래 김
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)용호 최
 

Similar to Swift세미나(속성(properties), 메소드(method)) (20)

Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java class
Java classJava class
Java class
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
Swift 3 Programming for iOS : class and structure
Swift 3 Programming for iOS : class and structureSwift 3 Programming for iOS : class and structure
Swift 3 Programming for iOS : class and structure
 
15 swift 클래스
15 swift 클래스15 swift 클래스
15 swift 클래스
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿
 
Annotation
AnnotationAnnotation
Annotation
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)Use JavaScript more strictly (feat. TypeScript, flow)
Use JavaScript more strictly (feat. TypeScript, flow)
 
Effective c++ 정리 1~2
Effective c++ 정리 1~2Effective c++ 정리 1~2
Effective c++ 정리 1~2
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)
 
Linq
LinqLinq
Linq
 

Swift세미나(속성(properties), 메소드(method))

  • 1. Properties & Method about Swift 창원대학교 정보통신공학과 Mobile-X 정경원 지도교수 : 박동규 2015.1.20
  • 2. 목차 • 저장 속성( Stored Properties) • 연산 속성(Computed Properties) • 메소드(Methods)
  • 3. 저장 속성(Stroed Properties) • 특정 클래스와 구조체의 인스턴스에 저장되는 상수나 변수 • var 키워드로 선언되면 변수 저장 속성. • let 키워드로 선언되면 상수 저장 속성.
  • 6. Lazy 저장 속성 • lazy 저장속성은 이 속성이 처음으로 사용되어 질 때까지 초기화 되지 않음. • 저장 속성 앞에 lazy를 써줌으로써 lazy저장속성을 표시. • 반드시 var 키워드로 선언된 변수에만 적용가능. • 상수는 항상 초기 값을 가져야 하기 때문에 상수 속성으로는 선언 할 수 없다. • 복잡한 클래스의 불필요한 인스턴스 생성을 피하기 위해, lazy 저 장 속성의 사용이 유용함.
  • 8. 연산 속성(Computed Properties) • 저장속성, 클래스, 구조체, 열거형은 연산 속성을 정의할 수 있음 • 연산속성은 실제로 값을 저장하지는 않고, 다른 속성이나 값들 을 간접적으로 접근하여 값을 조회하거나 수정할 수 있는 getter 와 선택적인 setter를 제공.
  • 10. 연산 속성(Computed Properties) 연산속성의 setter에 새로운 값이 저장될 이름을 명시해 주지 않으면 자동으로 생성되는 기본값 newValue를 사용할 수 있다.
  • 11. 메소드(Method) • 기존의 객체지향언어 메소드의 형태와 사용법이 매우 유사. • dot( . )을 이용해 접근. • 특정 클래스, 구조체, 혹은 열거형의 인스턴스에 속하는 함수 • 인스턴스 속성에 접근하고 수정하는 방법이나, 인스턴스의 용도에 관련된 기능을 지원.
  • 13. 외부 파라미터 명 • 함수에 있는 파라미터가 정확하게 어떤 의미를 가지는지 사 용자가 명확하게 알 수 있도록 파라미터의 이름을 지어주는 것. • 별명이라고 생각하면됨. • 변수명 앞에 선언 • 함수 내에서 사용불가. 외부에서만 사용가능.
  • 15. Shorthand 외부 파라미터 명 • 함수 파라미터에 외부파라미터를 사용하고, 그 외부파라미터 명이 함수 내부에서도 그대로 사용되길 원한다면, 함수 파라 미터명 앞에 해쉬심볼(#)을 써주면 된다. • 즉, 외부파라미터명과 내부파라미터명을 따로 사용할 필요없 이 하나의 이름으로 외부 내부에서 동시에 사용할 수 있도록 해주는 기능.
  • 17. • 모든 인스턴스 타입은 인스턴스 자체와 동일한 self라는 명시적 프로퍼티를 가지고 있음. • 이 명시적 self 프로퍼티는 자신이 속한 인스턴스 내에서 현재 인스턴스를 참조 하는데 사용. • 인스턴스 메소드 파라미터와 인스턴스 속성의 프로퍼티 가 동일한 이름을 가졌을 때 사용해서 구분. • self는 다른 객체지향 언어에서 this와 같은 의미. 즉, 자 기자신을 가리킴. The Self Property
  • 18. The Self Property self가 없다면 x는 둘다 메소드 파라미터를 참조한다고 여김.
  • 19. • 구조체와 열거형은 값타입이라서 인스턴스 생성후에는 메소드를 통해서 해당 인스턴스의 속성을 변경할 수 없는 데 이를 가능하게 하는 방법. • mutating이라는 키워드를 인스턴스 메소드 앞에 선언하 게 되면 이 메소드를 통해서 속성 변경 가능. Mutating
  • 20. Mutating 함수 이름만으로 첫번째 인수값의 용도가 명확해지기 때문에 외부 파라미터에 대해서 정의 할 필요가 없다. 하지만 두 번째 인수는 메소드가 호출되었을때, 그 용도를 명확 히 하기 위해서 외부파라미터 이름을 규정함.
  • 21. Mutating 구조체 인스턴스가 상수 타입의 변수에 할당 될때 는 mutating 을 사용 못함.
  • 23. 참고 자료 • http://blog.naver.com/seotaji/220136040885 • http://blog.naver.com/seotaji/220134412908 • http://swift.leantra.kr/