Android App Track⛺-007

MunkiJeon·2024년 6월 8일

TIL

목록 보기
24/59
post-thumbnail

TIL (Today I Learned)

오늘 공부한거!

  • Kotlin 문법 종합반(3강)
    • #어려운 용어 개념정리

      클래스(class) : 객체를 만들기 위한 틀이다. 틀로 찍어낼 객체의 속성과 메서드의 집합이 담겨 있다.
      객체(object) : 클래스로부터 만들어지는 실체, 클래스로 선언된 변수이다.
      인스턴스(instance) : 객체가 메모리에 할당된 상태,객체와 같은 의미로 쓰이기도 한다.

  • 3강 객체지향 프로그래밍의 기초
    객체지향 프로그래밍(Object Oriented Programming (OOP))
    모든것이 클래스 형태이므로 객체화(모듈/캡슐화) 할수 있음
  • 객체지향의 4가지 특징 키워드
  1. 추상화(Abstration) : 공통성과 본질을 모아 추출 = 객체의 공통적인 속성(변수)과 기능(메소드)을 추출하여 정의하는것
  • 추상화를 구현할 수 있는 문법 요소 : 추상 클래스(abstract class)와 인터페이스(interface)
     // 자동차와 오토바이의 공통적인 기능 추출하여 이동 수단 인터페이스에 정의
    interface Vehicle {
       abstract fun start()
       fun moveForward()
       fun moveBackward()
    }
    // Car 클래스 : 이동수단을 구체화한 자동차 클래스
    class Car : Vehicle {
       override fun moveForward() {
           println("자동차가 앞으로 전진한다")
       }
       override fun moveBackward() {
           println("자동차가 뒤로 후진한다")
       }
    }
    // MotorBike 클래스
    class MotorBike : Vehicle {
       override fun moveForward() {
           println("오토바이가 앞으로 전진한다")
       }
       override fun moveBackward() {
           println("오토바이가 뒤로 후진한다")
       }
    }

  1. 캡슐화 : 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것
    데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능들을 보호
    데이터 은닉 : 내부의 동작을 감추고 외부에는 필요한 부분만 노출
  • 접근제어자(access modifiers)
    • 클래스 또는 클래스 내부의 멤버들에 사용되어 해당 클래나 멤버들을 외부에서 접근하지 못하도록 접근을 제한하는 역할
  • 변경자클래스 멤버최상위 선언
    public(기본 가시성임)모든 곳에서 볼 수 있다.모든 곳에서 볼 수 있다.
    internal같은 모듈 안에서만 볼 수 있다.같은 모듈 안에서만 볼 수 있다.
    protected하위 클래스 안에서만 볼 수 있다.(최상위 선언에 적용할 수 없음)
    private하위 클래스 안에서만 볼 수 있다.같은 파일 안에서만 볼 수 있다.
  • 필드와 메서드를 하나의 단위로 묶어서 외부에서 직접적인 접근을 제한하고 데이터를 보호하기 위한 것으로, 필요한 경우에만 메서드를 통해 데이터를 조작할 수 있다.
  • 정보 은닉화 : 객체의 외부와 내부를 구분하고, 외부로부터의 접근을 제어하여 객체를 안정적으로 사용하고 관리할 수 있도록 도와준다.

  1. 상속 :
  • 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
    클래스 간 공유될 수 있는 속성과 기능들을 상위 클래스로 추상화시켜 해당 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용할 수 있도록 한다.
  • 클래스들 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한번만 정의해두고 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근하여 사용할 수 있도록 한다.

    상속과 인터페이스 비교
  • 공통점 : 양자 모두 상위 클래스-하위 클래스의 관계를 전제하면서 공통적인 속성과 기능을 공유할 수 있다.
  • 차이점 : 상속의 경우 상위 클래스의 속성과 기능들을 하위 클래스에서 그대로 받아 사용하거나 오버라이딩을 통해 선택적으로 재정의하여 사용할 수 있는 반면, 인터페이스를 통한 구현은 반드시 인터페이스에 정의된 추상 메서드의 내용이 하위 클래스에서 정의되어야 한다.
  • 결론 : 상속 관계의 경우 인터페이스를 사용하는 구현에 비해 추상화의 정도가 낮다고 할 수 있다.
    인터페이스가 역할에 해당하는 껍데기만 정의해두고, 하위 클래스에서 구체적인 구현을 하도록 갖에하는 것에 비해, 상속 관계의 경우 상황에 따라 모든 구체적인 내용들을 정의해두고 하위 클래스에서는 그것을 단순히 가져다가 재사용할 수 있다.
  1. 다형성 :하나의 인터페이스나 부모 클래스를 통해 여러 구현 클래스나 자식 클래스를 다룰 수 있는 기능으로, 같은 메서드 호출을 통해 서로 다른 클래스의 메서드를 실행할 수 있다.
    메서드 오버라이딩과 메서드 오버로딩을 통해 구현한다.
  • 메서드 오버라이딩을 통해 같은 이름의 moveForward()와 moveBackward()를 각각의 클래스의 맥락에 맞게 재정의하여 사용할 수 있다.
    즉, 같은 이름의 메서드가 상황에 따라 다른 역할을 수행하는 것
  • 메서드 오버로딩 : 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 중복하여 정의하는 것

Today Review

  • 어머니 아프신 것에 신경 쓰여 빡 집중은 못했지만 "티끌"집중 모아 태산....아니 언덕 수준 된 듯
profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글