■ 객체 지향 프로그래밍 (OOP) ■
• 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
프로그래밍에서 필요한 데이터들을 추상화 시켜 객체를 만들고, 객체들간의 상호작용을 통해 프로그램을 개발하는 프로그래밍 패러다임 중의 하나
• 자바 객체 지향 개념에서의 핵심 4가지
[1] 캡슐화
변수와 메서드를 클래스로 묶어 독립적으로 동작하지 않도록 하거나 불필요한 정보를 노출시키지 않는 개념
1. 코드의 유지보수성을 향상
2. 객체의 내부 구현을 외부로부터 숨김 (정보 은닉)
3. 객체의 내부 상태를 제어하고, 잘못된 접근으로부터 보호함
[2] 상속
부모 클래스가 가지고 있는 것을 자식 클래스가 물려받아 확장(extends)하는 개념
1. 코드의 재사용성을 높이고, 중복을 최소화
2. 계층적인 구조를 통해 객체 간의 관계를 나타낼 수 있음
[3] 추상화
구체적인 사실들을 일반화시켜 기술하는 개념으로써 필요한 공통점을 추출하고 불필요한 공통점을 제거하는 과정 1. 복잡한 시스템을 단순화하고 모델링이 가능
[4] 다형성
여러가지의 형태를 가질 수 있는 개념 (오버로딩, 오버라이딩, …)
1. 코드의 재사용성을 높이고, 중복을 최소화
2. 계층적인 구조를 통해 객체 간의 관계를 나타낼 수 있음
■ 클래스 ■
• 클래스(Class)
개발자가 어떠한 프로그램을 제작하기 위한 설계도(틀)
ex) 자동차 설계도, TV 설계도, 마이크 설계도, …
• 클래스의 유래
1. 변수 : 한가지의 데이터를 저장하는 공간
2. 배열 : 같은 타입을 가진 데이터를 저장하는 공간
3. 구조체 : 서로 다른 타입을 가진 데이터를 저장하는 공간
4. 클래스 : 서로 다른 타입을 가진 데이터와 특정 기능을 실행하는 함수의 결합

• 클래스(Class)
선언방식

• 참고

• 클래스 접근제한자 사용 예시

• 하나의 소스파일에서 여러 개의 클래스를 작성할 때 주의점
1. public class가 있는 경우에는 반드시 소스파일과 클래스의 이름이 일치해야 함 * 대소문자 구별
2. public class가 없는 경우에는 소스파일의 이름을 클래스 이름 중 하나로 가능
3. 하나의 소스파일에 2개의 public class를 가질 수 없음
■ 메소드 ■
• 메소드(Method)
클래스 내부에서 정의된 동작이나 기능을 수행하는 역할로써 어떠한 값을 전달하여 특정 작업을 수행하고 값을 반환할 수 있음 * 값의 반환은 필수가 아님

• 메소드 선언 방식

• 메소드 접근제한자
*참고 접근 제한자는 캡슐화 개념중의 하나이다.

• 메소드 예약어
메소드 예약어는 개발자가 사용하려는 용도에 따라 선택이 가능

• 메소드 반환형
메소드에서 코드가 실행되고 어떠한 값을 반환하고 싶을 때 사용되며, 반환은 필수가 아님




■ 메소드 매개변수 - 1 ■
• 메소드 매개변수
메소드에 전달되는 값의 정보를 담는 변수
• 예시

■ 메소드 매개변수 - 2 ■
• 주의 사항
1. 기본 자료형의 경우 메소드 안에서 값을 변경해도 원본 변수는 변경되지 않음
2. 배열과 클래스는 주소 값을 전달하므로 메소드 안에서 수정할 경우 원본 데이터가 수정됨
* 스택 영역 메모리에 어떠한 값이 들어 있느냐의 차이
• 참고
기본형 매개변수와 참조형 매개변수의 자세한 예시는 호출 스택을 배운 후 다시 언급
■ 메소드 매개변수 - 3 ■
• 주의 사항 예시

• 참고
String 타입은 참조형(주소 값을 가지고 있음) 변수이기 때문에 데이터가 수정될 것 같지만, 불변 타입이기 때문에 원본 데이터가 수정되지 않음.
* 객체를 수정하는 연산을 수행하면 새로운 String 객체가 생성됨(변경이 아님)
■ 메소드 매개변수 - 4 ■
• 가변인자
매개변수의 개수를 유동적으로 설정하는 방법 가변인자는 배열로 취급되며, 매개변수 가장 마지막에 설정해야함
• 예시

'Back-End > Java 메모장' 카테고리의 다른 글
수업 내용 (1) 호출 스택 (0) | 2024.03.26 |
---|---|
수업 내용 (1) 객체 (0) | 2024.03.25 |
수업 내용 (1) 배열 (0) | 2024.03.22 |
수업 내용 (2) 배열 (0) | 2024.03.20 |
수업 내용 (1) 제어문(반복문) (0) | 2024.03.20 |