[Section 1] Java 객체지향 프로그래밍 기초(1)

현이·2023년 2월 23일
0
post-thumbnail

사진은 프티 트리아농 안의 '왕비의 촌락'

자바 기본문법 세션이 끝나고 드디어 객체지향 프로그래밍으로 넘어왔다. 몇번씩 반복해서 배워도 늘 직접 누군가에게 OOP가 뭔지 말로 정확히 설명할 자신은 없어서 개념 정리를 이번에도 확실하게 짚고 넘어가야될 것 같다.




OOP(Object Oriented Programming)

  • 객체지향 프로그래밍 : 필요한 데이터를 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 협력과 상호작용을 통해 특정 기능을 구성하는 프로그래밍 방법론

  • OOP로 코드들의 결합도를 낮출 수 있다
    ➡️ '코드의 결합도를 낮춤' 이란?
    코드들의 연관성을 합리적인 수준으로 낮추는 것
    => 코드의 변화와 확장이 유연해진다.

<정리>

  • 객체: 무언가에 대한 정보와 동작을 묶어놓은 것
  • 클래스: 객체의 설계도, 객체가 어떤 정보를 가져야 하는지, 어떤 동작을 가져야 하는지를 기술한 것
  • 필드: 객체가 가져야 하는 정보
  • 메서드: 객체가 가져야 할 동작



클래스(Class)와 객체(Object)

클래스

  • 객체를 정의한 틀
  • 인스턴스 : 클래스를 통해 생성된 객체

객체

  • new 키워드로 객체 생성
  • . 포인트 연산자로 객체 멤버에 접근

객체의 생성과 활용

 Car tesla = new Car("Model Y", "빨강"); // 객체 생성, 초기화 
 
 class Car {
    public String model; // 필드 선언
    public String color;

    public Car(String model, String color) { // 인스턴스 초기화
        this.model = model;
        this.color = color;
    }

    void accelerate() {
        System.out.println("더 빠르게!");
    }

    void stop(){
        System.out.println("멈춰!!");
    }
}

메모리 활용

  • 클래스 영역 : 클래스 변수(static) 저장
  • 스택 메모리 영역 : (객체)참조 변수, 지역 변수 저장
  • 힙 메모리 영역 : 객체, 필드 저장




필드(Field)와 메서드(Method)

필드

  • 클래스에 포함된 변수
  • 클래스 변수(cv, class variable), 인스턴스 변수(iv, instance variable) (static 으로 구분)
  • 지역 변수는 메서드 블럭 안에 있는거!
  • 지역 변수 - 직접 초기화 안하면 출력할때 오류 남
  • 필드 변수 - 직접 초기화 안해도 강제 초기화됨

static 키워드

  1. 정적 필드는 객체 간 공유 변수의 성질이 있다
  2. 정적 메서드는 인스턴스 변수 또는 인스턴스 메서드를 사용할 수 없다

=> static 키워드로 정의되어 있는 멤버들은 인스턴스 생성이나 호출없이 사용 가능

+) 클라우드에 있는거 가져다 쓰는 것 같은 개념


메서드 & 메서드 오버로딩

  • 메서드 : 특정 작업을 실행하는 일련의 명령문들의 집합
  • 메서드 오버로딩 : 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의
    조건: 메서드 이름은 동일, 매개변수 개수나 타입이 달라야함

0개의 댓글