프로그래밍 언어 40

코틀린[Kotlin] #04_함수 정의와 호출

안녕하세요. 문범우입니다. 이번 포스팅에서는 코틀린에서의 함수 정의와 함수 호출을 중심으로 알아보도록 하겠습니다.관련된 코드의 내용은 아래 주소에서 확인할 수 있습니다.https://github.com/doorBW/kotlin-study 1. 컬렉션 코틀린에서 알아보고자 했던 함수에 대해 확인하기 이전에 컬렉션을 만드는 방법부터 확인해보고 넘어가자.아래와 같이 컬렉션을 만들고, 만들어진 컬렉션 객체가 어떤 클래스에 속하는지 함께 확인해보자. 1234567891011fun main(){ val set = hashSetOf(1,7,53) println(set.javaClass) // class java.util.HashSet val list = arrayListOf(1,7,53) println(list.ja..

코틀린[Kotlin] #03_코틀린 기초(when, 스마트 캐스트, 반복문, in, 예외처리)

안녕하세요. 문범우입니다. 오늘은 지난번 포스팅에 이어서, 코틀린의 기초에 대해서 알아봅니다. 보다 자세하게는 when, 스마트캐스트, 반복문, in, 예외처리에 대해서 학습하도록 하겠습니다. 관련된 코드의 내용은 아래 주소에서 확인하실 수 있습니다. https://github.com/doorBW/kotlin-study1. when먼저 지난 시간에 구성했던 enum class, Color를 이용하여 when에 관한 함수를 만들어보자.12345678910111213141516171819202122232425enum class Color( val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0),..

코틀린[Kotlin] #02_코틀린 기초(함수,클래스,프로퍼티,enum)

안녕하세요. 문범우입니다.이번 포스팅에서는 코틀린의 기초에 대해서 알아보도록 합니다.구체적으로는 함수, 변수, 클래스, 프로퍼티, enum에 대해서 학습합니다.관련된 내용의 코드는 아래 주소에서 확인하실 수 있습니다.https://github.com/doorBW/kotlin-study 1. 함수 우선 어느 프로그래밍 언어에서나 시작해보는 "Hello, world!"를 출력해보자. 123fun main(args: Array){ println("Hello, world!")}cs 코틀린에서는 위와 같이 간단한 코드로 문자열 출력을 할 수 있다. 본격적으로 코틀린에 대해서 알아보기 이전에 위 코드에서 파악할 수 있는 몇가지를 살펴보자. - 함수를 최상위 수준에 정의가 가능하다. 즉, 꼭 클래스 안에 함수가 존재..

코틀린[Kotlin] #01_코틀린이란?

안녕하세요. 문범우입니다.최근 팀 동료분들과 함께 Kotlin 스터디를 하게 되었습니다. 빠르게 관련 서적을 함께 공부하고 이후 무언가를 만들어보기로 목표를 가지고 진행합니다. 우선적으로는, 책의 내용을 공부하며 블로그에 포스팅을 진행할 예정입니다. 서적은 [Kotlin in Action, 드미트리 제메로프/스베트라나 이사코바 지음, 오현석 옮김, 에이콘출판사]를 참고합니다.잘못된 내용이나 궁금한 사항에 대해서는 언제든 연락주시면 감사하겠습니다. 1. 코틀린이란 무엇인가? 코틀린(Kotlin)이란 기존의 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다.앞으로 함께 알아보겠지만 코틀린은 간결하고, 실용적이면서도 자바 코드와 상호운용성(interoperability)을 중요시한다. 즉, 현재 자바가 사용..

파이썬(PYTHON) 클린코드 #10_ SOLID, 의존성 역전 원칙(DIP)

안녕하세요. 문범우입니다.이번 포스팅에서는 SOLID 원칙 중 마지막 원칙인, 의존성 역전 원칙(Dependency Inversion Principle)에 대해서 알아보도록 하겠습니다. 1. DIP(Dependency Inversion Principle) 우선 의존성 역전 원칙(DIP)의 정의에 대해서 알아보자. 의존성 역전 원칙은, 추상화를 통해 세부 사항에 의존하지 않도록 해야 하지만, 반대로 세부 사항(구체적인 구현)은 추상화에 의존해야 한다는 원칙이다. 쉽게 말해서, 보다 고수준 모듈(클래스)은 보다 저수준 모듈(클래스)에 대해 의존하면 안된다는 것이고, 의존하지 않는다는 것은 저수준 모듈의 변경이나 추가 등에 있어서 변경점이 없어야 한다는 것이다. 파이썬이라는 언어의 특성상 융통성이 있으며, 동..

파이썬(PYTHON) 클린코드 #9_ SOLID, 인터페이스 분리 원칙(ISP)

안녕하세요. 문범우입니다.이번 포스팅에서는 SOLID 원칙 중, 인터페이스 분리 원칙(ISP)에 대해서 알아보도록 하겠습니다. 1. ISP(Interface Segregation Principle) 인터페이스 분리 원칙(ISP)은, 클라이언트가 자신이 이용하지 않는 메소드에 의존하면 안된다라는 원칙이다.다른 방향으로 해석해보자면, 하나의 인터페이스는그 책임에 맞는 메소드만 가지고 있어야 한다는 의미이다. 책임이라는 용어, 매우 익숙할 것이라고 생각한다. SOLID에 대해서 알아보며 첫번째로 다루었던 SRP원칙과 매우 유사하게 느껴질 것이다. 물론 SOLID 원칙 모두가 상호 연관 관계가 있고, 좋은 코드를 목표로 하고 있기 때문에 더욱 그렇게 느껴질 수 있다.이번에 다뤄볼 ISP와 이전에 학습한 SRP의..

파이썬(PYTHON) 클린코드 #8_ SOLID, 리스코프 치환 원칙(LSP)

안녕하세요. 문범우입니다.이번 포스팅에서는 SOLID 원칙 중, 리스코프 치환 원칙(Liskov Substitution Principle)에 대해서 알아보도록 하겠습니다. 1. LSP(Liskov Substitution Principle) 리스코프 치환 원칙은, SOLID 원칙 중에서도 많은 분들이 헷갈려하거나 어려워하는 원칙이다.리스코프 치환 원칙에 대한 정의(LISKOV 01)는 다음과 같다.만약 S가 T의 하위 타입이라면, 프로그램을 변경하지 않고 T타입의 객체를 S타입의 객체로 치환 가능해야 한다. 이것이 어떤 의미일까?필자가 공부하고 있는 "파이썬 클린코드" 서적에서는 다음과 같이 이야기한다. LSP의 주된 생각은 어떤 클래스에서든 클라이언트는 특별한 주의를 기울이지 않고도 하위 타입을 사용할 ..

파이썬(PYTHON) 클린코드 #7_ SOLID, 개방 폐쇄 원칙(OCP)

안녕하세요. 문범우입니다.이번 포스팅에서는 SOLID 원칙 중, 개방 폐쇄 원칙(Open/Close Principle)에 대해서 다뤄보도록 하겠습니다. 1. OCP(Open/Close Principle) 개방 폐쇄 원칙(Open/Close Principle)이란 소스가 기능 확장에는 열려있지만, 기능 수정에는 닫혀있어야 한다는 원칙이다. 보다 쉽게 말해서, 새로운 기능을 추가함에 있어서는 신규 기능에 대한 소스 추가만 진행해야 하고 기존의 코드를 수정해야 하는 일은 없어야 한다는 것이다.만약, 새로운 기능을 추가하는데에 있어서 기존의 코드를 수정해야 한다면 기존의 코드가 좋지 않게 디자인 되었다는 것으로 생각할 수 있다. 바로 예제를 통해 확인해보도록 하자. 다음의 코드는 OCP가 잘 지켜지지 못한 코드..

파이썬(PYTHON) 클린코드 #6_ SOLID, 단일 책임 원칙(SRP)

안녕하세요. 문범우입니다.이번 포스팅에서는 SOLID 원칙에 대해서 알아봅니다. SOLID는 5가지 원칙을 줄여서 말하는 내용인데, 한번에 5가지 모두를 알아보지 않고, 각 원칙에 대해서 코드로 함께 살펴보며 총 5개의 포스팅으로 나누어 설명드릴 예정입니다. 0. SOLID란? 우선 솔리드, SOLID는 객체 지향 프로그래밍 및 설계의 다섯가지 기본 원칙을 이야기한다. 프로그램이 시간이 지나도 유지 보수 및 확장이 쉬울 수 있도록 하기 위한 원칙이며, 우리가 학습하고자 했던 클린코드를 위한 원칙이기도 하다. 조금 더 구체적으로, SOLID는 아래와 같은 5가지 원칙을 이야기 한다. 1. Single Responsibility Principle(단일 책임 원칙) 2. Open/Closed Principle..

파이썬(PYTHON) 클린코드 #5_ 인자(Argument)

안녕하세요. 문범우입니다.이번 포스팅에서는 파이썬에서의 인자(Argument)에 대해서 알아보도록 하겠습니다.파이썬에서 인자가 어떻게 작동하는지, 그리고 가변인자와 같은 개념들도 함께 알아보도록 하겠습니다. 0. 인자(Argument)와 매개변수(Parameter) 본격적으로 인자에 대해서 알아보기전에, 자주 헷갈릴 수 있는 인자와 매개변수에 대해서 잠깐 짚고 넘어가도록 하자. 물론 이는 파이썬언어 뿐만이 아니라 다른 언어에서도 혼동되서 사용될 수 있는 개념이다. 12345def func1(param1, param2): print(f"param1:{param1}, param2:{param2}") func1("AA","B")# param1:AA, param2:Bcs 위의 코드를 살펴보며 이야기해보자.함수 ..

728x90