Apple is Apple

일일 회고

 

Kotlin 기본 강의를 통해 Kotlin을 복습하는 느낌으로 공부하였다.

일단 공부를 했었었던 내용이라 강의와 과제에 어려움은 없었다.

 

다만. 개인 과제를 하면서 git, github를 사용 중 처음 보는 에러를 만났는데 이것을 해결하느라 약간 시간이 걸렸다.

에러를 고쳐가는 과정에서 새로운 내용을 배울 수 있었고, 에러를 고치는 과정을 글로 남겨보았다.

 

이렇게 문제나 새로이 알게되는 것이 있다면 따로 기록해 두어 나중에 같은 상황이 발생했을 때도 빠르게 대처할 수 있을 것 같다 (중요한 건 같은 문제를 만들지 않는 것..!)

 


늘의 주요 Keyword

 

  • Kotlin 기본
  • 객체지향 프로그래밍 기본
  • Git & Github
  • Trouble Shooting

 


 

Kotlin 개요

- Kotlin은 2017년 구글에서 지정한 안드로이드 공식 지정 언어 

- Java보다 간결하고 안전한 코드 작성이 가능하다.

- Java의 단점을 개선 (null-safe(아주 좋은 점이라 생각), 타입 추론 등..)

 

 

Kotlin 기본

자료형 (Data Type)

"자료를 저장할 수 있는 적절한 형태"

Kotlin은 변수의 타입을 명시하지 않아도 "알아서 추론"한다.

val str: String = "str"
val a = 12
val list: List<Int> = listOf(1,2,3)
// val 변수: 자료형(선택, 코틀린은 자료형을 지정안해도 자료형 추론을 함) = 초기화

연산자, 조건문, 반복문

연산자

산술연산자, 대입연산자, 증감연산자, 비교연산자 등이 있음

조건문

if, else if, else, when 키워드로 조건문을 사용

if(조건문) {
    조건문이 true일 때 실행
} else {
    false일 때 실행
}

when(변수) {
    x -> {변수가 x일 때 실행}
    y -> {변수가 y일 때 실행}
}

반복문

for, while 키워드로 사용

 

 

객체지향 프로그래밍 with Kotlin

객체지향 프로그래밍 - Object Oriented Programming (OOP)

Kotlin은 모든 것이 클래스형태이므로 객체화 가능

프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만듦

객체들 간의 적절한 결합을 통해 유지보수가 용이함

 

객체지향 5대 키워드 (+ 5대 원칙)

  • 클래스
  • 추상화
  • 캡슐화
  • 상속
  • 다형성
  •  SOLID 원칙 - SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)

 

메소드 설계

특정한 로직을 가지는 코드 뭉치

한 번 만들어 놓으면 재사용할 수 있음

fun 이름(변수: 자료형,....) : 리턴 타입 {
	// 로직 작성
}

클래스 설계

생성자 - 클래스(설계도)를 실체화할 때 최초로 실행할 로직

Kotlin의 생성자는 클래스명 옆에 바로 선언하는 주생성자, 클래스 내부에서 constructor 키워드를 사용하여 선언하는 부 생성자가 있다.

주생성자는 한 개의 생성자만 만들 때 주로 사용, 부생성자는 여러 가지 생성자를 만들 때 주로 사용

class student{
	// 프로퍼티
    private val name: String
      private val height: Double
	..
	// 메소드
    fun getName() = this.name
	..
}

// 주생성자
class student(_name:String, _height: Int){
	// 프로퍼티
    private var name: String
    private var height: Double
	..
    // 클래스가 생성될 때 바로 실행되는 init 구문
    init {
    
    }
    
	// 메소드
    fun getName() = this.name
	..
}

// 부생성자
class student{
	// 프로퍼티
    private val name: String
    private val height: Double
    
    constructor(_name:String, _height: Int) {
    	this.name = _name
        this.height = _height
    }
	..
	// 메소드
    fun getName() = this.name
	..
}

객체

위에서 껍데기, 즉 클래스를 만들었는데 이제 이 껍데기를 실체화해서(객체로 만들어서) 사용을 시작한다. 

>>  객체로 만들면 메모리로 올라가 프로퍼티, 메소드를 저장하여 사용한다.

 

상속

  • 공통적인 요소들이 있다면 부모/자식 클래스를 구분해서 상속관계를 만들 수 있다.
  • Kotlin은 무분별한 상속을 막기 위해 기본적으로 상속을 막아두고 open 키워드를 활용해야 상속이 가능하다.
open class Person{}

class Student: Person() {
	// .... 상속된 클래스의 모든 것을 사용가능
}

장점 -  중복된 코드를 줄일 수 있고, 유지 보수가 편리하며, 통일성이 있고 다형성을 구현할 수 있다.

 

 

Trouble Shooting

Git, Github

과제 도중 git, github 사용하다 발생한 오류에 대해 작성한 글이다.

 

[Error] Your configuration specifies to merge with the ref 'refs/heads/main'
from the remote, but no such ref was fetched.

https://aaapple.tistory.com/13     

 

 

profile

Apple is Apple

@mjjjjjj