728x90
✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨
💜 코드프레소 이러닝 강의 수강 중 - Java 프로그래밍 초급 💜
😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎
메소드(Method)
- 객체는 속성과 행위를 갖고 있고, 메소드는 객체의 행위를 정의한다
- 메소드는 함수(function)과 거의 유사하다
- input과 output이 존재하며 특정 작업을 수행한다
- 메소드는 특정 객체에 포함되어 있다
- 독립적으로 존재하지 않는다
함수(funtion)
- 특정한 작업을 수행하기 위한 코드들의 집합
- 특정 작업의 코드들을 모듈화하여 필요한 경우 호출한다
- 코드의 중복을 줄일 수 있다 (재사용)
메소드 vs 함수
메소드의 문법
- 메소드를 호출하기 위한 메소드의 이름이 존재한다
- 특정 작업을 위한 메소드의 구현 코드가 중괄호({ }) 내부에 구현된다
- 메소드는 Input과 Output이 존재한다
- Input은 없거나 1개 이상의 파라미터 리스트이다
- Output는 없거나 리턴 값으로 표시한다
- 리턴 타입은 리턴 되는 값의 자료형이다 (리턴 값이 없는 경우는 void로 사용된다)
메소드의 이름
- 메소드의 이름은 행동을 표현하기 위해 보통 동사로 시작한다
- print(), getUserInfo(), setPassword() 등....
- 첫 단어는 소문자로 시작하며, 2개 이상의 단어가 결합될 경우 연결되는 단어의 첫 문자를 대문자로 표시한다
- getUserInfo(), setPassword(), SignUp(), getOrderList() 등...
- 메소드가 수행하는 작업을 의미있게 표현하는 이름으로 작명한다
객체의 메소드를 호출
- 점 연산자(dot operator)로 객체의 멤버(메소드)에 접근이 가능하다
- 필요한 경우 메소드의 인자(값)를 전달한다
- 메소드 호출의 결과 값을 리턴받아 사용할 수 있다
메소드 정리!
- 메소드는 함수와 같이 특정 작업을 위한 코드들의 집합이다
- 메소드는 함수와 다르게 특정 객체에 종속적이다
- 메소드는 Input과 Output이 존재하고 각각 리턴값, 파라미터로 표현한다
- 메소드의 이름은 동사로 시작하며, 메소드의 행동을 명확하게 표현해야 한다
- 객체의 메소드는 점 연산자를 사용하여 호출이 가능하다
- 객체의 메소드는 모든 데이터를 전달하지 않아도 객체의 멤버 변수에 대한 연산이 가능하다
캡슐화(Encapsulation)의 2가지 의미
- 객체의 속성과 행동을 하나의 단위로 그룹화한다
- 객체의 속성과 행동을 은닉(Information Hiding)
- 반드시 필요한 속성 및 행동만 외부에 노출한다
- 대부분의 속성 및 행동은 외부에서 접근하지 못하도록 막는다
객체의 정보 은닉(inforamtion Hiding)
- 객체 내부에는 외부에서 접근해서 변경하면 안되는 속성이 존재한다
- 반드시 필요한 멤버만 외부에 노출하여 결합도를 줄일 수 있다
- 그러면 노출된 멤버들만 외부와 결합되기 때문에 결합도를 줄일 수 있는 것이다!
객체의 정보 은닉 방법
- 접근 제어자(Access Modifier)를 활용하여 멤버의 접근을 제어한다
- Java 접근 제어자의 종류
접근 제어자 | 설명 |
public | 모든 곳에서 접근할 수 있다 |
private | 외부에서 접근이 불가능하고, 객체 내부에서만 접근할 수 있다 |
protected | 상속 관계에서 자식이 부모 멤버에 접근할 수 있다 |
default | 같은 패키지 내부에서만 접근이 가능하다. 접근 제어자를 명시하지 않으면 자동으로 부여된다 |
접근 제어자의 사용
- 클래스, 멤버 변수, 메소드에 활용할 수 있다
- 클래스는 class 키워드 앞에 명시한다
- public class User
- 멤버 변수는 자료형 앞에 명시한다
- private String email;
- 메소드는 리턴 타입 앞에 명시한다
- public boolean isOver20()
private 접근 제어자
- private으로 지정된 멤버는 외부에서 접근이 불가능하다
- private 멤버도 객체 내부에서는 접근이 가능하다
- 보통 모든 멤버 변수는 private으로 지정한다
- 외부에 반드시 노출이 필요한 메소드만 제외하고, 객체 내부에서만 활용되는 메소드도 private으로 지정한다
- private 멤버 변수의 값을 변경하거나 사용하고 싶을 때
- 생성자로 객체 멤버 변수 값을 초기화한다
- setter 메소드로 객체 멤버 변수의 값을 변경한다
- getter 메소드로 객체 멤버 변수의 값을 사용한다
접근 제어자 정리!
- 캡슐화 중 정보 은닉은 반드시 필요한 멤버만 적절한 단계로 외부에 노출하고, 그 외의 정보는 숨기는 것이다
- 외부에서 잘못된 형태로 속성을 변경하여 프로그램에 문제가 생기는 것을 막는다
- 객체간의 결합도를 조정하여 좋은 설계를 만들 수 있다
- 접근 제어자를 default가 아닌 반드시 적절한 명시가 필요하다
- public 멤버는 외부의 모든 곳에서 접근이 가능하고, private 멤버는 외부에서 접근이 불가능하다
메소드의 문법
메소드 파라미터(매개변수)의 활용
- 파라미터는 메소드의 input 데이터 (input 데이터를 받는 변수)
- 없거나 1개 이상의 파라미터가 존재할 수 있다
- 메소드 이름 뒤에 위치하며 소괄호 내부에 "자료형 변수명" 쌍으로 표현한다
- comma로 분리하여 1개 이상의 파라미터를 선언할 수 있다
this의 개념과 활용
- 객체의 내부에서의 this는 해당 객체 자신을 의미한다
- 변수의 이름이 중복되지 않는 경우에는 this를 명시하지 않아도 무방하지만, 보통 멤버 변수의 이름과 중복된다
Setter 메소드
- 멤버 변수의 값을 세팅하는 메소드로, set이라는 동사로 시작한다
- 이를 setter라고 지칭한다
- setter에는 적절하지 앟은 값이 전달되었을 경우를 위해 추가적인 검증 로직을 추가하기도 한다
- ex) 나이 멤버 변수에 음수 값이 전달 된 경우
인자(argument) vs 파라미터
- 인자는 메소드에 전달하는 데이터(값)
- 파라미터는 전달받는 인자 값을 저장하는 변수
- 함수 호출할 때 넣는게 인자, 함수에서 인자를 받는 변수를 파라미터라고 하는거다~
메소드 리턴 값의 활용
- 메소드의 수행 결과를 값으로 반환한다
- return 키워드를 사용하며, return을 만나면 메소드는 값을 반환하고 종료된다
- 메소드 내에 1개 이상의 return 문을 사용할 수 있다
- 하지만 return 문은 최대한 적게 존재하는 것이 권장된다 (1개를 권장함)
- 너무 많은 경우에는 메소드의 로직을 파악하기 어렵다
- 메소드에 리턴하는 값의 자료형을 명시해야 한다
- 리턴 값이 없는 경우도 존재한다 -> void 자료형 사용
Getter 메소드
- 멤버 변수의 값을 반환하는 메소드로, get이라는 동사로 시작한다
- getter라고 지칭한다
- 메소드 안에서 이름이 겹치지 않으면, 자동으로 해당 변수는 멤버 변수의 이름으로 취급되기 때문에 this 포인터가 필요없다!
메소드 리턴 값과 파라미터 정리!
- 메소드는 input과 output이 있을 수 있고, 각각 파라미터와 리턴 값을 갖는다
- 메소드는 0개이거나 1개 이상의 파라미터를 가질 수 있다
- this 키워드는 생성된 개게 자기 자신을 가리킨다
- 메소드 내부의 변수 명과 객체의 멤버 변수 명이 중복될 경우 this를 사용한다
- private 멤버 변수의 값을 변경하거나 반환하는 메소드를 각각 setter, getter라고 한다
- 메소드의 리턴 값이 있을 경우, 리턴 값의 자료형과 return 문을 명시한다
- return 문은 메소드 내에서 여러 번 사용은 가능하나, 권장되지는 않는다
728x90
'코드프레소 체험단 > Java 프로그래밍' 카테고리의 다른 글
자바, 인텔리제이 꿀팁! (0) | 2022.01.20 |
---|---|
[Java 프로그래밍 초급] 객체지향 기초개념 (3) (0) | 2022.01.20 |
[Java 프로그래밍 초급] 객체지향 기초개념 (1) (0) | 2022.01.20 |
[처음 시작하는 Java 프로그래밍] 반복문 (0) | 2022.01.14 |
[처음 시작하는 Java 프로그래밍] 배열 (0) | 2022.01.14 |
댓글