야곰 스위프트 프로그래밍(1. 스위프트의 언어적 특성)

🌈 devleeky16498·2022년 5월 19일
0

본 주제에서는 야곰 스위프트 프로그래밍 일독을 하며, 개인적으로 인상깊거나 잘 기억하고 싶은 내용을 서술해 둘 예정이다. 스위프트 공식문서 1회독 이 후, 보다 편하게 서술된 야곰 스위프트 프로그래밍 서적을 함께 읽으니 시너지가 있었다.

스위프트의 언어적 특성

스위프트는 여러가지 프로그래밍 패러다임을 차용한 다중 패러다임 프로그래밍 언어이다.

  1. 명령형 프로그래밍 패러다임
  2. 객체 지향 프로그래밍 패러다임
  3. 함수형 프로그래밍 패러다임
  4. 프로토콜 지향 프로그래밍 패러다임

위에서 언급한 4가지의 언어 패러다임을 채용했다. 결과적으로 스위프트에서 가장 강조하는 부분은 함수형 프로그래밍과 프로토콜 지향 프로그래밍 패러다임이다.

객체지향 프로그래밍 패러다임?

기존의 명령형 프로그래밍 패러다임의 시각에서 멋어나서 여러개의 독립된 단위 객체의 모임으로 파악하고자 하는 시각이다. 객체지향 프로그래밍은 클래스에 하나의 문제 해결을 위한 데이터와 메서드를 모아놓은 방식으로 응집력을 강화한다. 또한 각 클래스는 독립적으로 역할을 수행하게 디자인해서 결합력은 약화한다.

클래스와 객체?

클래스 : 같은 종류의 집단에 속하는 속성과 행위를 정의한 것. 객체 지향 프로그래밍의 기본 사용자 정의 데이터 타입(커스텀 자료형)이라고 할 수 있다.

객체 : 클래스의 인스턴스(실제로 메모리에 할당되고 동작하는 모양을 갖춘 것)를 의미한다. 객체는 고유의 특성이 있으며, 클래스로서 정의한 행위들을 할 수 있다.

메서드 : 객체가 클래스에 정의된 행위를 실질적으로 하는 함수를 말한다.

클래스는 객체가 만들어지기 위한 일종의 청사진이다. 클래스는 실제 메모리에 객체를 할당해 인스턴스를 만들기 위한 설계도이다. 따라서 인스턴스를 생성했을 때 비로소 클래스는 그 역할을 제대로 수행하게 된다.

함수형 프로그래밍 패러다임?

함수형 프로그래밍의 가장 큰 특징은 함수를 1급 객체로 다룬다는 것이다.

  1. 함수를 전달인자로 사용 가능하다.
  2. 프로퍼티로서 함수를 정의할 수 있다.
  3. 변수나 데이터 구조 안에 함수를 담을 수 있다.
  4. 반환 값으로 사용이 가능하다.
  5. 할당할 때 고유한 객체로 구별할 수 있다.

함수형 프로그래밍 패러다임을 통해서 프로그램 작성 시 장점은 다음과 같다.

  1. 여러가지 연산처리 작업이 동시에 일어나는 프로그램 작성이 쉽다.
  2. 효율적인 프로그램을 만들기 쉽다.
  3. 상태변화에 따른 부작용에서 자유로워지기 때문에 순수하게 기능 구현에 초점을 두고 설계가 가능하다.

프로토콜 지향 프로그래밍 패러다임?

이 프로토콜 지향 프로그래밍은 참조타입인 클래스의 인스턴스를 값 타입보다 더욱 효과적으로 사용하며 오류를 줄일 수 있다.

스위프트에서는 구조체와 열거형에 기존 클래스에서 구현 가능하던 기능을 모두 구현 가능하다. 또한 프로토콜에 익스텐션 사용이 가능해지면서 프로토콜 지향 프로그래밍이 가능해졌다. 실제로 스위프트의 프로토콜 지향 프로그래밍 패러다임은 프로토콜 익스텐션 기법을 통해서 완벽해졌다.

profile
Welcome to Growing iOS developer's Blog! Enjoy!🔥

0개의 댓글