강의 3주차 듣기 및 계산기 코드 짜보기
기본형
fun 메소드이름(변수명:자료형, ...) : 반환자료형 { 소스코드 로직 }
예시코드
fun main() { var num1 = readLine()!!.toInt() var num2 = readLine()!!.toInt() // sum이라는 이름의 메소드를 호출! sum(num1, num2) } fun sum(num1:Int, num2:Int) { var result = num1 + num2 println("num1과 num2의 덧셈결과는 ${result}입니다.") }
Object Oriented Programming (OOP)라고 하며 코틀린은 모든 것이 클래스형태이므로 객체
화 가능하다.
클래스에는 정보(프로퍼티)와 행위(메소드)를 작성하고 클래스의 적절한 결합을 통해 유지보수
를 쉽게 할 수 있다.
클래스의 기본 구조
class 클래스이름 { 정보1 정보2 행위1 행위2 }
Init(주 생성자)
한 가지의 형태로 클래스를 실체화할때는 주 생성자를 활용할 수 있다.
항상 같은 파라미터를 생성하는 코드를 최초로 실행할 때는 주 생성자를 사용한다.
Constructor(부 생성자)
여러 형태로 클래스를 실체화할때는 보조 생성자를 활용한다.
여러개의 생성자를 통해 최초로 코드를 실행할 때는 부 생성자를 이용한다.
모든 인스턴스를 포함하는 개념으로 클래스 타입으로 선언된 것들을 객체라고 한다.
클래스형태로 설계된 객체를 실체화하면 인스턴스가 생긴다.
인스턴스는 메모리 공간을 차지한다.
클래스 간의 관계를 부모/자식 클래스를 구분하여 상속관계를 만들 수 있다.
무분별한 상속으로 예상치 못한 흐름을 방지하기 위해 final 키워드로 상속을 막아두었다.
코틀린은 open 키워드로 상속 관계를 만들 수 있다.(open class...)
상속받은 부모 클래스의 정보(프로퍼티)나 행위(메소드)를 재설계할 수 있다.
부모 클래스의 행위를 재설계하고 이 행위를 오버라이딩이라고 한다.
매개변수의 갯수와 자료형을 다르게하면 동일한 이름의 메소드를 만들 수 있다.
반환자료형은 오버로딩에 영향을 주지 않는다.
OOP관점에서 만약 필요한 기능이 있을때마다 별도의 이름으로 만들면 일관성을 해치므로
일관성을 유지하는 목표를 가지고 재사용성을 높여 유지보수가 쉽게 만들기 위해 상속과 오버라이
딩을 합니다.
.
.
.
.
.
오늘은 계산기 코드를 한번 작성해봤는데 너무 어렵다 ㅠㅠ
아직도 갈 길이 멀었다 ㅠㅠ
하루종일 적었지만 아직 멀었다 ㅠㅠ
내일 질문드리러 가야겠다 ㅠㅠ
생각보다 많이 발전했을꺼라고 생각했는데 내가 이해하는게 틀린건지
내용이 맞아도 손이 안움직이는건지...
하루종일 고민해보고 적어봤는데 돌아보니 고작인거같다...ㅠㅠ
내일은 질문드리고 피드백 받고 해봐야겠다!
(단어의 뜻은 조금씩 들어오는데 연관관계를 아직 모르는 건지 ㅠㅠ)