이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 김은비
개발환경은 Windows, Android Studio입니다.
1. OOP( Object Oriented Programming, 객체지향 프로그래밍)
ex) 자바, C#, 코틀린 등
< 개념 >
- 변수, 타입
- 흐름제어
- 함수
- 컬렉션
- 클래스, 객체
변수
= 저장공간에서의 위치
-> 저장공간이 어디인지 나타내기 위해 고유의 이름(ID)을 정해야 함
흐름제어
= 조건이 맞는 경우에만 코드 실행, 조건이 맞는한 코드를 반복해서 실행
함수
= 코드를 나눠주고 필요시 코드 블록을 실행
-> 코드 재사용시 용이
컬렉션
= 많은 요소를 한 군데에 저장하게 해주고 흐름제어의 도움을 받아 여러 요소를 반복 실행 해줌
-> 한 곳에서 여러 값을 저장하고 싶은 경우 사용
클래스
= 직접 데이터 타입을 만들게 해주고, 데이터 멤버와 데이터 메서드를 한 곳에서 관리
-> 여기서 데이터 메서드는 코드를 알아보기 쉽고 유지 가능하게 도와줌
2. 클래스와 객체 ( Classes & Objects )
ex) 자동차 클래스
클래스 = 몸체
속성 = 최고 속도, 바퀴 개수, 창문 개수, 문 개수 등 ---> 변수
기술 = 운행, 정지 ---> 메서드
클래스와 객체
클래스를 만드는 것 = 새로운 설계도를 만드는 것
클래스 = 속성과 기술을 정의해주는 설계도
객체 = 클래스로 만들어진 결과물
3. 클래스와 초기화
// class 생성
class Person (_firstName: String, _lastName: String) {
// 멤버변수(특성)
var firstName: String = _firstName
var lastName: String = _lastName
// 초기화
init {
println("Initialized a new Person object with firstName = $firstName and lastName = $lastName")
}
}
// class 생성 with 보조생성자
class Person constructor(_firstName: String, _lastName: String) { // constructor = 보조생성자 -> 기본 생성자와 다른 생성자를 제공 -> 객체(인스턴스) 생성 시 편의 제공 or 추가적 구문 수행
// 멤버변수(특성)
var firstName: String
var lastName: String
// 초기화
init {
this.firstName = _firstName
this.lastName = _lastName
println("Initialized a new Person object with firstName = $firstName and lastName = $lastName")
}
}
// class 생성 with 멤버변수
class Person(var firstName: String, var lastName: String) {
// 초기화
init {
println("Initialized a new Person object with firstName = $firstName and lastName = $lastName")
}
}
// class 생성 with 멤버변수 + 기본값 할당
class Person(var firstName: String = "John", var lastName: String= "Doe") {
// 초기화
init {
println("Initialized a new Person object with firstName = $firstName and lastName = $lastName")
}
}
// 객체 생성
val denis = Person("denis", "Panjuta")
val john = Person()
val johnPeterson = Person(lastname: "Peterson")
4. 변수 영역과 섀도잉
fun main(){
//함수의 매개변수는 생성 시 값을 가질 수 없고, 함수가 호출될 때만 인자를 가질 수 있음
myFunction(a:5)
}
// parameter(매개변수)
fun myFunction(a:Int){
// a = 변수
var a = a // -> print 5
var a = 4 // -> print 4
/*
Point
1. 7번째줄 a와 9번째줄 var a는 다른 존재
2. 코틀린 메서드에서 변수와 매개변수의 이름을 같게 설정하면 발생하는 문제
= 섀도잉
= 매개변수와 인자가 같은 이름을 가질 경우 지역 매개변수가 외부 스코프(함수)에 있는 인자를 가림
-> 시스템 내 다른 곳으로부터 코드를 디커플링하는데 힘듦
(디커플링 = 인터페이스를 사용하여 모듈 끼리의 의존성을 감소시키고 유지보수 효과를 높이는 방법)
*/
}
'GDSC HUFS 4기 > Kotlin Team #3' 카테고리의 다른 글
[3팀] Android-12-Kotlin : 코틀린 기초 더 배우기(배열 - 람다식) (0) | 2022.10.09 |
---|---|
[3팀] Android-12-kotlin : 접근제어자, 중첩 클래스, Safe Cast, 예외처리 (1) | 2022.10.08 |
[3팀] Android-12-kotlin Interface and Abstract class (1) | 2022.10.07 |
[3팀] Android-12-Kotlin: Conditions and Loops (0) | 2022.10.03 |
[3팀] Android-12-Kotlin: 변수설정과 데이터 유형 (0) | 2022.10.03 |