TodayILearned/Android&Kotlin
2023.07.17 TIL (내배캠 Kotlin강의 3주차-1)
YJ_ILY
2023. 7. 17. 15:34
1. 메소드 설계
- 특정한 로직을 가지는 소스코드에 이름을 붙일 수 있음
- 이름이 붙은 로직을 메소드라고 부름
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
소스코드 로직
}
변수명:자료형 => 파라미터라고 부름
반환자료형이 없을때는 Unit으로 명시하거나 생략할 수 있음
메소드 사용
- 로직을 추상화해놓고 상황에 맞게 실행
- 코드의 재사용성을 높임
활용 예시
- 두 개의 숫자를 더하는 메소드를 만들고, 전달하는 숫자에 따라 덧셈결과를 알려줌
- 매일 오전 10시, 5만원 이상의 주식 정보를 출력 후 메일로 전송
2. 클래스 설계
객체지향 프로그래밍
- 코틀린은 모든것이 클래스 형태이기 때문에 객체화 가능
- 프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만듦
- 객체들간의 적절한 결합을 통해 유지보수를 쉽게 함
- 5대 키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성
클래스
- 프로그램의 각 요소별 설계도
- class 키워드를 활용해서 클래스를 만듦
- 정보(프로퍼티)와 행위(메소드) 작성
- 보통 하나의 파일은 한개의 클래스를 의미하지만, 하나의 파일안에 여러개의 클래스가 있을수도 있음
class 클래스이름 {
정보1
정보2
행위1
행위2
}
★★★특별한 클래스(데이터 클래스, 실드 클래스, 오브젝트 클래스)★★★
데이터 클래스
- 개발을 하다보면 프로퍼티만 가지고 있는 클래스 필요
- data class 사용시 간편해짐
- 기본 생성자에 1개 이상의 매개변수가 변수나 상수로 존재해야
- 유용한 메소드를 자동 생성해줌
hashCode() | 객체를 구분하기 위한 고유값을 리턴 |
eqauals() | 동일한 객체인지 비교해서 true/false 리턴 |
copy() | 현재 객체의 모든 정보를 복사해서 새로운 객체 리턴 |
toString() | 현재 객체의 모든 정보를 출력해줌 |
getXXX() / setXXX(매개변수) | 변수의 값을 리턴하거나 설정해줌 |
data class 클래스이름 {
정보1
정보2
}
실드 클래스
- 상속받을 수 있는 자식클래스들을 미리 정의 가능
- 무분별한 상속 방지 가능
sealed class 부모클래스 {
class 자식클래스1 : 부모클래스생성자
class 자식클래스2 : 부모클래스생성자
}
오브젝트 클래스
- Java의 static 대신 사용하는 키워드
- 프로그램을 실행하는 동시에 인스턴스화
클래스 사용 예시
- 신규 게임 캐릭터의 머리색상(정보), 스킬(행위)를 클래스에 작성
- 게임 배경에 배치할 나무의 높이, 색상 등(정보)를 클래스에 작성
- 어떤 요소의 설계를 하는 것
클래스의 예시
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
3. 생성자 (notion-생성자 정리 참고)
- 기본 생성자와 명시적 생성자 존재
- 기본 생성자는 클래스를 만들던 행위와 차이가 없음
- 명시적 생성자 : 주생성자와 부생성자로 구분
- 주생성자와 부생성자의 차이는 클래스 옆에 붙냐, 클래스 안에 있냐의 차이
- 한 가지의 형태로 클래스를 실체화할때에는 주생성자 활용
- 여러 형태로 클래스를 실체화 할때는 부생성자 활용
생성자 활용 예시
- 항상 <이름, 머리, 키>만 생성자에서 최초로 코드를 실행할 때는 주생성자 사용
- <이름,머리색상,키> 또는 <이름, 머리색상,키,나이,성별>처럼 여러개 생성자를 통해 최초로 코드를 실행할 때는 부생성자 사용
4. 객체(Object)
- 모든 인스턴스를 포함
- 클래스 타입으로 선언된 것들
인스턴스
- 클래스를 이용해서 만들어 내는 서로 다른 속성의 객체를 지칭하는 용어
- 클래스 타입으로 선언된 객체를 실체화해서 메모리에 올린 것
- 메모리 공간을 차지
Person A instance "박보영", 1990
Person B instance "전정국", 1997
Person C instance "장원영", 2004