본문 바로가기
개발노트/Kotlin

4주차 5일째 OPP 그리고 Setter와 Getter,Method

by 시계속세상은아직돌아가는중 2023. 8. 4.

1.OOP에대해

 

OOP란 Object Orentend Programing의 약자로 객체지향프로그래밍을 지향하는 말이다.

반대말로는 절차지향 프로그래밍이 있으며 대표적으로 C언어가 있다.

 

그 외의 언어는 대부분 객체지향성을 가진다고 보면 된다.

 

1) 객체란

객체란 속성(property)과 기능(method)가 있다.

 

버스라는 객체가 존재한다면

 

들어가는 연료

버스종류(시내,광역,고속)

경유지

 

등이 존재할 것이고

 

기능으로는

 

주행

정지

하차

 

등이 존재할 것이다.

 

2)프로퍼티(property)

코틀린에서 프로퍼티는 아래 세 가지 요소로 이루어져있다.

 

Filed 실제로 데이터가 저장되는 공간
Getter 저장된 값을 읽으려고 호출되는 함수
Setter 값을 저장할 때 호출하는 함수

 

클래스 선언 Getter 생성 Setter 생성 유형
class Person(name:String) X X 생성자 매개변수
class Person(var name:String) O O 속성(property)
class Person(val name:String) O X 속성(property)

 

그렇다면 Getter와 Setter는 뭘까?

val name:Strig // 읽기 전용 프로퍼티로 private feild와 public getter 함수를 생성한다
var age:Int //쓰기도 가능한 프로퍼티로 praicate feild와 public getter,setter를 생성한다

평소에 상수 선언이라 생각했던 val와 변수 생성이라고 생성했던 var의 의미를 생각해보자.

 

val는 이후에 값을 변경할 수 없는 상수이다.

즉 val는 데이터를 저장하지만(feild를 가진다) Getter만 생성된다.(읽을 수 있는 함수만 생성된다)

Setter 즉 데이터를 저장할 수 있는 함수가 생성되지 않기 때문에 해당 형식은 값을 변경할 수 없는 것이다.

 

하지만 var은 Getter와 Setter를 동시에 생성하므로 데이터를 가져오고(Getter) 해당 데이터에 다른 데이터를 넣고 저장할 수 있다.(Setter)

 

3)메소드(Method) 그리고 함수(Function)

 

메소드는 위에 명시했듯이 기능을 담당한다.

하지만 기능을 불러오는 것이라면 함수도 있지 않은가?

 

그렇다면 메소드와 함수의 차이점을 한 번 말해보자.

 

함수는 하나의 기능을 구션하도록 구성한 독립된 존재다.

 

그렇다면 메소드는?

 

메소드는 클래스 내부에 종속되어 존재하는 존재이다. 다른 말로는 '클래스 함수'라고도 부른다.

아래 코드는 메소드와 함수를 정리한 코드다.

 

//함수

fun function(x:Int, y:Int): Int{
            return x+y
}

fun main(){
var x = 0
var y = 0
function(x,y)
}

//메소드
class Class{
   fun method(x:Int, y:Int):Int{
   return x+y
   }
}

fun main()
{
var x = 0
var y = 0
  var class = Class()
  claas.method(x,y)
  
}

 

 

 

 

 

참고 블로그/사이트

https://doing7.tistory.com/155

 

[Kotlin] 함수 vs 메서드, 프로퍼티 vs 필드

자바에서는 자주 사용하지 않았던 용어 같은데, 코틀린에 오니 갑자기 많이 쓰이게 되는 용어들이 있다. 대충 느낌은 오니까 대수롭지 않게 넘겼는데, 찾아보니 분명한 차이가 있었고 이 차이들

doing7.tistory.com

https://hongku.tistory.com/347

 

코틀린의 필드와 접근자(getter, setter) 사용방법

들어가기 앞서, 클래스에 대한 간단한 개념을 알아야하는데, 우리가 클래스를 사용할 때는... 내부의 데이터를 캡슐화(encapsulate)하고, 캡슐화한 데이터를 다루는 코드를 클래스라는 하나의 주체

hongku.tistory.com

https://hongku.tistory.com/341

 

코틀린의 메소드 사용방법(Kotlin)

코틀린에서 메소드를 만드는 방법을 알아보고, 반환값이 있는 메소드 생성하는 법과 반환값이 없는 메소드 생성하는 법을 살펴본다. 그리고, 자바와 달리 코틀린에서만 사용가능한 메소드 정의

hongku.tistory.com

https://velog.io/@goyou123/%ED%95%A8%EC%88%98%EC%99%80-%EB%A9%94%EC%86%8C%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

함수와 메소드의 차이점

JAVA(안드로이드), JS, PHP 를 주로 하다 보니 함수라는 용어를 쓰다가 메소드를 만났을때, 메소드라는 용어를 쓰다가 함수라는 용어를 만났을 때 이해없이 단어들을 사용하고 있었다. 그래서 이 둘

velog.io

 

오늘 푼 문제

https://clockstillticktockticktock.tistory.com/35

 

프로그래머스 직사각형 넓이 구하기 코틀린

https://school.programmers.co.kr/learn/courses/30/lessons/120860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

clockstillticktockticktock.tistory.com

https://clockstillticktockticktock.tistory.com/36

 

프로그래머스 콜라츠 추측 코틀린

https://school.programmers.co.kr/learn/courses/30/lessons/12943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

clockstillticktockticktock.tistory.com

https://clockstillticktockticktock.tistory.com/37

 

프로그래머스 부족한 금액 계산하기 코틀린

https://school.programmers.co.kr/learn/courses/30/lessons/82612 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

clockstillticktockticktock.tistory.com

https://clockstillticktockticktock.tistory.com/38

 

프로그래머스 최대공약수와 최소공배수 코틀린

https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

clockstillticktockticktock.tistory.com