우아한 테크코스의 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. 실제로 사용하는 코드 만들기