티스토리 뷰
paradigm : 한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 인식의 체계 또는, 사물에 대한 이론적인 틀이나 체계
프로그래밍 패러다임 : 프로그래머에게 프로그래밍의 관점을 갖게 해 주고, 결정하는 역할을 함
객체 지향 프로그래밍
- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 패러다임
- 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향
- 강한 응집력 : 클래스에 하나의 문제 해결을 위한 데이터를 모아 놓은 데이터형을 사용함으로써 응집력을 강화
- 약한 결합력 : 클래스간에 독립적으로 디자인함으로써 결합력을 약화
- 특징
- 자료 추상화 : 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것
*) 추상 자료형 : 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것, 접근 제어를 통해 자료형의 정보를 은닉 - 상속 : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능
- 다형성 : 어떤 한 요소에 여러 개념을 넣어 놓는 것
ex1) 오버라이딩(같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것)
ex2) 오버로딩(같은 이름의 메소드가 인자의 개수, 자료형에 따라 다른 기능을 하는 것) - 동적 바인딩 : 실행 시간 중에 일어나거나 실행 과정에서 변경 될 수 있는 바인딩
*바인딩 : 변수 또는 상수의 이름에 값을 할당하는 것
point) Swift는 동적 바인딩을 채용하고 있지 않다. 정적 바인딩을 채용한다. - 등등...
- 자료 추상화 : 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것
명령형 프로그래밍
- 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 패러다임
- 객체 지향 프로그래밍 패러다임을 차용한 언어는 필수로 명령형 프로그래밍 패러다임을 사용
- why? 프로퍼티, 변수 등에 해당하는 메모리 값의 변화(상태변화)가 있기 때문
함수형 프로그래밍
- 함수 자체의 응용을 강조하고, 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변데이터를 멀리하는 패러다임
- cf) 명령형 프로그램이 : 상태를 바꾸는 것을 강조
- 특징
- 최근 대세
- 대규모 병렬처리가 쉬움 : 부작용이 거의 없음
- 전달된 인자값만을 사용하기 때문에 일정하게 같은 결과를 도출할 수 있음
- 일급 객체를 다룸
- 모나드, 함수객체, 필터, 맵, 플랫맵, 리듀스 등 사용가능
- 최근 대세를 이루는 패러다임
- 대규모 병렬처리가 쉬움
일급객체
조건 : 로빈 포플스톤의 일급객체 정의
- 전달인자로 전달할 수 있음
- 반환 값으로 사용 가능
- 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별 가능
- 동적 프로퍼티 할당이 가능
- 변수나 데이터 구조 안에 담을 수 있음
- 4번 + 5번 : 할당 명령문의 대상이 될 수 있음
커링
다중 인수를 갖는 함수를 단일 인수로 갖는 함수들의 함수열로 바꾸는 것
장점
- 함수의 재사용성 향상
- 코드의 가독성 향상
....? ) 단순한 예시만을 보고는 커링에 대한 이해가 부족한 것 같다. 그렇다고 심화적인 예시를 보자니 실력이 안되는 것 같다. 나중에 다시 봐야겠다
정리한 내용들은 야곰님의 스위프트 프로그래밍 3판 책을 보고 어려웠던 부분을 공부한 내용에 위키와 검색을 통해 알게된 내용을 추가해 정리한 것입니다.
잘못된 내용이 있을 수 있습니다. 잘못된 내용이 있으면 댓글로 알려주시면 감사하겠습니다!
'Swift' 카테고리의 다른 글
[부스트코스-iOS]추가 공부2 - 오토레이아웃 (0) | 2021.03.10 |
---|---|
[부스트코스-iOS]추가 공부1 - 앱시닝, 에셋 카탈로그 (0) | 2021.03.03 |
[Firebase]토이프로젝트 (1) - Storage (0) | 2020.11.25 |
Xcode 스토리보드 사용하지 않는 방법 (0) | 2020.11.24 |
옵셔널(Optional) (0) | 2020.08.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Swift
- 디자인패턴
- HumanInterfaceGuidelines
- 온라인저지
- HIG
- Human Interface Guidelines
- ios
- MVC
- storage
- DP
- 백준
- 분할정복
- 오토레이아웃
- apple
- 싱글톤
- 부스트코스
- Firebase
- Human Interface Guideline
- 알고리즘
- UIView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함