Home 객체 지향 프로그래밍 - 클래스와 객체 1~2
Post
Cancel

객체 지향 프로그래밍 - 클래스와 객체 1~2

우아한 테크코스의 1주차 프리코스를 완료했습니다.
1주차 프리코스를 하며 느낀점은, 객체 지향을 고려하면서 코드를 짜는게 쉽지 않았습니다.
제출하고 보니 객체 지향인지도 잘 모르겠고, 가독성이 많이 떨어지더라구요..😒
따라서 2주차 미션에 도움이 되고자 객체 지향에 대한 기초부터 다시 정리하려고 합니다.

참고한 도서는 Do it! 자바프로그래밍 입문입니다

객체 지향 프로그래밍


  • 객체를 정의하고 객체 간 협력을 프로그래밍하는 것이다.
  • 객체 지향 프로그래밍을 잘하기 위해서는 역할과 구현으로 나누어 개발한다.

클래스


  • 클래스는 객체의 속성과 기능을 코드로 구현한 것
  • 객체가 가지는 일반적인 속성을 클래스 속성이라한다.
  • 클래스 속성은 멤버 변수,특성으로 부르기도 한다.
  • 클래스 이름은 대문자로 시작한다 - 개발자들 사이의 규칙 [ 코딩 컨벤션 ]

함수


  • 함수는 하나의 기능을 수행하는 일련의 코드이다.
  • 함수에 이름을 붙일 때는 의미를 알 수 있는 단어를 사용하는 것이 좋다.
  • 메서드는 함수의 한 종류이다.
  • 함수 수행을 종료하기 위해 return;을 쓸 수 있다.
  • 여러 함수를 사용하는 경우에 함수를 호출한 순서대로 메모리가 만들어지고,
    맨 마지막에 호출한 함수부터 반환된다.
  • 하나의 함수에 여러개의 기능이 섞여 있으면 가독성,중복코드 문제 해결할 수 없다.
1
2
3
4
5
6
7
8
9
void divide(init num1,int num2){
    if(num2 == 0){
        System.out.println("나누는 수는 0이 될 수 없습니다.");
        return;
    }else{
        int result = num1/num2;
        System.out.println(result);
    }
}

멤버함수


  • 멤버 함수(=Method)는 클래스 내부에서 멤버 변수를 사용하여 클래스 기능을 구현한 것
  • 멤버 함수는 함수에 객체 지향 개념이 포함된 용어

인스턴스와 참조 변수


  • 인스턴스는 클래스가 메모리에 생성된 상태 - new 예약어로 호출
  • 객체는 생성된 인스턴스이자, 객체 지향 프로그램의 대상이다.
  • 참조변수는 인스턴스가 가리키는 클래스형 변수

생성자 오버로드


  • 클래스에 생성자가 2개 이상 제공되는 경우이다.
  • 필요에 따라 매개변수가 다른 생성자를 여러개 만들 수 있다.

접근 제어자


  • public으로 선언한 변수나 메서드는 외부 클래스에서 접근이 가능하며, 사용할 수 있다.
  • private으로 선언한 변수나 메서드는 외부 클래스에서 사용할 수 없다.
  • private로 선언한 변수에 접근하기?
    • public 메서드를 통해 제공한다 👉 get(), set() 메서드

정보은닉


  • 클래스 내부에서 사용할 변수나 메서드를 private로 선언하여 외부에서 접근하지 못하도록 함
  • 자바에서는 접근제어자를 통해 정보은닉을 구현

this 예약어


  • this는 생성된 인스턴스를 스스로 가리키는 예약어
  • 생성자가 여러개 있을 때, 한 생성자에서 다른 생성자를 호출하는 경우 ❌주의할 점 : this를 사용하여 생성자를 호출하느느 코드 이전에 다른 코드를 넣을 수 없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
Class Preson{
    String name;
    int age;

    Person(){
        this("이름 없음",1); // this를 사용해 Person(String,int) 생성자 호출
    }

    Person(String name,int age){
        this.name = name;
        this.age = age;
    }
}

static 변수(= 클래스 변수)


  • 프로그램이 실행되어 메모리에 올라갔을 때 딱 한번 메모리 공간이 할당
  • 클래스에서 공통으로 사용하는 변수이다.
  • 다른 멤버 변수처럼 클래스 내부에 선언한다.
  • static 변수는 정적 변수라고도 한다.
  • static 변수는 직접 클래스 이름으로 참조가 가능하다 [ Ex. Student.sereialNum ]

static 메서드(= 클래스 메서드)

  • static 메서드는 클래스 이름으로 참조가 가능하다 [ Ex. Student.getSerialNum() ]

인스턴스 변수

  • 클래스의 멤버 변수는 인스턴스가 생성될 때 만들어지는 인스턴스 변수이므로
    클래스 메서드 내부에서 사용 불가

싱글톤 패턴

  • 객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴 [ static 활용 ]
    • Step 1. 생성자를 private로 만들기
    • Step 2. 클래스 내부에 static으로 유일한 인스턴스 생성하기
    • Step 3. 외부에서 참조할 수 있는 public 메서드 만들기
    • Step 4. 실제로 사용하는 코드 만들기
This post is licensed under CC BY 4.0 by the author.