210301 Mon

Sunny·2021년 4월 3일
0

Today I Learned

목록 보기
5/88

학습내용

  • 타입이란 무엇인가?

사람의 특성을 미리 설계도를 만들어 놓으면 >> 그것과 똑같은 종류의 것을 수십개, 수백개 만들어낼 수 있다.

같은 설계도에서 나왔더라도 특성은 다 다를 수 있음

e.g. 자동차 색깔

  • Optional (옵셔널) 타입

= 안에 값이 있다 혹은 없다 정의된 타입

설계도(blueprint)를 타입이라고 부름

  • CPU에서 동작하기 위해서 머무르는 장소는 ‘메모리’
  • 설계도를 통해서 메모리의 실제로 동작하게 만들어진 친구들이 ‘인스턴스’
  1. 타입 = 하나 존재함 (설계도)
  2. 인스턴스 = 설계도로부터 수백개, 수만개가 나올 수 있음. 각자 다름.
  • 옵셔널이란 타입의 인스턴스

일반화된 친구를 가져다 쓰는게 주로 우리가 하는 일

  • 프로퍼티 = 저장돼있는 변수 값

(구조체에서 변수랑 함수를 가지고 있을 수 있음)

  • 메소드 = 함수 (기능과 변수)
  • 프로퍼티 = 타입 값
  • 메서드 = 할 수 있는 일 (어떤 타입의 함수다)

메서드와 함수는 엄연히 다른 용어다

추상화 vs. 일반화

  • 추상화? <중요한 특징>을 <추출>해서 <간단하게 표현>하는 것

e.g. 지하철 노선도/ 약도 (무슨 사거리에 어느정도 거리를 가면 뭐가 있음)

  • 일반화? 두 개 이상의 개체 집합을 묶어 <좀 더 상위의 개체 집합>을 만드는 것

e.g. 축구공, 농구공, 배구공 >> 공으로 일반화 할 수 있음!

e.g2. 남자, 여자 >> 사람

  • 추상화를 하기 위해서는 먼저 일반화를 해봐야 함

  • 타입과 인스턴스의 관계?

타입과 클래스는 동치가 아님

클래스는 타입의 일종임

어떤 타입을 만든다는 것은 일반화와 추상화의 과정을 거친다고 얘기할 수 있음

  • 메서드는 행위(~한다)로 표현해주는게 좋음

e.g.스크린 입력 >> 스크린을 통해 입력을 받을 수 있다.

우리가 사용하는 모든 값에는 <타입>이 있음

은닉화 vs. 캡슐화

  • 은닉화란? Hiding
  • 외부로 드러나지 않아야 할 정보를 숨기는 것
  • 겉으로 드러나야 할 필요가 없거나 드러나면 안되는 것 숨김

e.g. 세탁기에 들어가는 특정 부품은 우리 회사의 기밀 제품임

  • 겉으로 드러나지 않게 외부에 표출 안함

  • (세탁기가 구동되는 원리/ 어떤 기어가 들어가는지?)

  • 캡슐화란? Encapsulation

  • 중요사항을 감추고 외부에서 개체를 사용할 수 있는 수단을 제공하는 것

  • 은닉화는 캡슐화로 가는 과정 중에 하나일 수 있음

사용자에게 숨길건 숨기되

사용자가 어떤 행위를 통해서

이 친구의 결과물을 얻는 <통로>가 필요하다

그 통로를 제공하는게 캡슐화다.

e.g. 전원 버튼을 누른다 = 컴퓨터가 동작한다

-> 이게 컴퓨터를 캡슐화 한것임

(안에서 어떻게 동작하는지는 신경쓰지 마라.

앞에서 보여줄 것만 보여준다. 이게 캡슐화)

Q. 타입을 어떻게 캡슐화할 수 있을까?

예시) 타입: 현금인출기

돈을 출금한다고 할때 (이 메소드를 실행할때)

인스턴스에게 <얼만큼?>이라고 힌트를 주는게 파라미터

무엇을 프린트 하겠느냐? 물었을때

프린트할 값을 매개변수로 전달해줌

Step1. 일반화, 추상화

Step2. 은닉화, 캡슐화

겉으로 사용자와 맞닿는 부분은 <메서드>로 구현

사용자 = 이 코드를 사용할 다른 프로그래머

다른 프로그래머가 세탁기라는 타입의 인스턴스를 사용할때

세탁기에 일을 시키는 방법은 메서드를 호출해준다.

앞으로 메서드를 어떻게 구성해줄까?가 최대의 관심사, 고민거리가 될 것

문제점 / 고민한 점

  • 첫째 주 프로젝트에서 변수 네이밍을 좀 더 명확히 해야겠다는 생각이 들었음
  • 코딩 시작전에 플로우 차트 그리기!

해결방법

  • API Design Guidelines을 다시 꼼꼼히 읽어보면서 정리해봐야겠다.
  • 플로우 차트를 내일 그려볼 예정이다.
profile
iOS Developer

0개의 댓글