Skip to content

Latest commit

 

History

History
150 lines (117 loc) · 6.51 KB

2020_11_12.md

File metadata and controls

150 lines (117 loc) · 6.51 KB

TIL (Today I Learned)

11월 12일 (목)

제가 이해한 대로 작성한 내용이다 보니, 정확한 정보가 아닐 수 있습니다.
고쳐야 할 부분이 있다면, 편하게 얘기해 주시면 감사하겠습니다.🙏🏻



TIL preview

주변 사람들과 나를 비교하지 말자! 충분히 잘 하고 있다.
단기간이 아니라 길게 보고 평생 해야할 일인데 조급해하지말자.
게을러지지만 말자...(헿)
라는 중요한 이야기와 함께
타입 설계 활동학습을 진행하였습니다.
일반화와 추상화를 예시를 통해 경험해보았습니다.
하지만 아직도 일반화, 추상화에 대한 개념이 정확히 머리에 들어온 것 같지는 않습니다.
시간이 지나면서 계속 사용하다보면 좀 더 이해가 가겠죠..?
그 외에도 타입, 인스턴스, 메서드, 프로퍼티에 대해서 간단히 정리해보았습니다!
정규표현식 공부도 조..금했습니다!


타입

ex) 구조체, 클래스, 열거형, 프로토콜 등

  • 개체들의 공통된 특성을 일반화하여 표현한 것
  • 개체의 행위와 특성을 한 곳에 모아 표현

개체

= 인스턴스

  • 설계도를 토대로 공장에서 만들어진 로봇 개체
  • 타입의 인스턴스를 생성하는 과정을 인스턴스화라고 함

개체 일반화 해보기

일반화: 서로 다른 개체들부터 공통된 개념을 추출하는 것 예) 곰, 고래, 사람 -> 포유류

특정 개체들의 공통점을 일반화 하여 개체들이 할 수 있는 행위를 메서드로,
개체들이 갖는 특성을 프로퍼티로 정의해봅시다.
예) 여러종류의 고양이 개체별 특징 일반화 -> 고양이 타입
고양이, 강아지 등 여러 동물 개체의 특징 일반화 -> 동물 타입
다양한 자동차의 공통점 일반화 -> 자동차 타입

개체 추상화 해보기

추상화: 복잡함 속에서 필요한 관점만 추출하는 것
예) 지하철 노선도에서 복잡한 요소를 배제함(실제 거리와 위치 등)

여러 개체의 특성을 일반화 한 타입을 추상화 합니다
밖으로 드러내야 할 행위와 속성, 내부에서만 알아도 되는 행위와 속성을 구분지어
겉에서만 단순하게 명령하고 결과를 받을 수 있도록 설계합니다
예)
수 많은 일을 할 수 있는 자동차 -> 엑셀, 브레이크로 추상화
부팅하기까지 많은 일을 하는 컴퓨터 -> 전원 버튼 누르기로 추상화

++ 추상화를 활용하면 함수가 조금 더 구체적, 함수를 작게 만들고 하나의 일만 하도록 구현할 수있다.

메서드

  • 인스턴스가 할 수 있는 행위 혹은 동작

클로저

  • ‘코드의 블록’
  • 실행 가능한 여러 줄의 코드를 하나의 묶음으로 묶어놓은 것

함수

  • 스위프트에서 함수는 ‘이름을 갖는 클로저’

함수와 메서드

  • 기본적으로 같다. 다만 상황이나 위치에 따라 다른용어로 부르는 것 뿐
  • 특정 타입에 연관되어 사용하는 함수를 메서드, 모듈 전체에서 전역적으로 사용할 수 있는 것은 함수

변수

  • 변수는 특정 데이터에 해당하는 값의 이름
  • 변수의 값은 임시 기억장치에 저장
  • 변수의 값은 필요에 의해 언제든지 변경

상수

  • 상수를 사용하는 이유 중 가장 중요한 이유는 가독성!

프로퍼티

  • 타입에 속한 변수 또는 상수

스위프트 기본 데이터 타입

Int 와 UInt

  • Int는 +,- 부호를 포함한 정수
  • UInt는 - 부호를 포함하지 않고, 0은 포함한 양의 정수

Bool

  • 참(ture) 또는 거짓(false)만을 값으로 가짐

Float 과 Double

  • 부동 소수점을 사용하는 실수, 부동 소수 타입
  • 64비트의 부동 소수 표현을 하는 Double
  • 32비트의 부동 소수 표현을 하는 Float
  • 64비트 환경에서 Double은 최소 15자리 십진수를 표현, Float은 6자리까지만 표현가능

String

  • 문자의 나열, 즉 문자열
  • String 타입에는 많은 메서드와 프로퍼티가 구현되어 있다.

정규표현식

을 오늘 사용했다.
기존에 정규표현식이 string을 다룰때 유용하다는 이야기를 들었는데,
실제로 짜본적은 없어서 막막했습니다...
그래서 url 정규표현식으로 검색한 결과

"((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?"  

이러한 것이 등장했는데...?!
하나씩 뜯어보며 살펴보니, 무슨 뜻인지 대충 이해는 가지만
지금 프로젝트에서는 앞부분이 http:// 혹은 https://로 시작하는 것만 검사하면 될거같아서
^https?://[\w]+로 구현했다가 되는것 같았다가 안되어서
(http|https)://[\S]+로 전환했습니다..ㅎ_ㅎ

정규표현식의 의미

 ^ : 시작을 뒤에 글자 혹은 단어로 함  
 ? : 앞에 있는 글자 혹은 단어가 있을수도 없을 수도 있음  
 [] : 원하는 걸 안에 집어넣으면 됨   
 \w : all word  
 \S : \s가 white space인데 \S는 white space빼고 모든 것을 의미합니다.(그렇다면 \W도 사용할수있겠죠?!)    
 + : 앞에 단어 혹은 글자가 뒤에 1개 이상 등장한다  
 * : +와 마찬가지인데, 0개 이상 등장한다(등장하지 않을 수 있음)    

사실 너무 많은 표현들이 있어서 모두 공부하기는 어려울 것 같고,
하단에 찾아놓은 사이트들을 이용해서 필요할때마다 구현해보고
그때그때 자주쓰이거나, 유용한 것들을 조금씩 외워나가면 될거같습니다!!




TIL summary && impression

많이 들어는 봤지만 머릿속에 정리되지 않은 개념들이 있었습니다.
전체적으로 공부가 된것같고,
아직 일반화와 추상화는 정확히 이해가지 않지만,
앞으로 사용하면서 좀 더 명확히 이해할 수 있도록 노력하겠습니다.
쉽진 않았지만, 정규표현식도 사용해봐서 뿌듯한 하루였습니다. 끝!

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D // 정규표현식
https://qastack.kr/programming/1471201/how-to-validate-an-url-on-the-iphone // 정규표현식 예시
http://userguide.icu-project.org/strings/regexp // 정규표현식2
https://regexper.com/ // 정규표현식 시각화

다음 TIL 보기