일일 회고
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
'내일배움캠프 7기 > TIL' 카테고리의 다른 글
내일배움캠프 7기 Android TIL 6일차 (2023.07.21) (1) | 2023.07.21 |
---|---|
내일배움캠프 7기 Android TIL 5일차 (2023.07.20) (0) | 2023.07.20 |
내일배움캠프 7기 Android TIL 4일차 (2023.07.19) (0) | 2023.07.19 |
내일배움캠프 7기 Android TIL 3일차 (2023.07.18) (0) | 2023.07.18 |
내일배움캠프 7기 Android TIL 1일차 (2023.07.14) (0) | 2023.07.14 |