본문 바로가기
코드프레소 체험단/Java 프로그래밍

[Java 프로그래밍 초급] 객체지향 기초개념 (2)

by 의정부핵꿀밤 2022. 1. 20.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - Java 프로그래밍 초급 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


메소드(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 사용
  • 변수의 이름이 중복되지 않는 경우에는 this를 명시하지 않아도 무방하지만, 보통 멤버 변수의 이름과 중복된다
    • this사용 X

 

 

Setter 메소드

  • 멤버 변수의 값을 세팅하는 메소드로, set이라는 동사로 시작한다
  • 이를 setter라고 지칭한다
  • setter에는 적절하지 앟은 값이 전달되었을 경우를 위해 추가적인 검증 로직을 추가하기도 한다
    • ex) 나이 멤버 변수에 음수 값이 전달 된 경우

 

 

 

인자(argument) vs 파라미터

  • 인자는 메소드에 전달하는 데이터(값)
  • 파라미터는 전달받는 인자 값을 저장하는 변수
  • 함수 호출할 때 넣는게 인자, 함수에서 인자를 받는 변수를 파라미터라고 하는거다~

 

 

메소드 리턴 값의 활용

  • 메소드의 수행 결과를 값으로 반환한다
    • return 키워드를 사용하며, return을 만나면 메소드는 값을 반환하고 종료된다
    • 메소드 내에 1개 이상의 return 문을 사용할 수 있다
    • 하지만 return 문은 최대한 적게 존재하는 것이 권장된다 (1개를 권장함)
    • 너무 많은 경우에는 메소드의 로직을 파악하기 어렵다
    • return 문 개선 예시
  • 메소드에 리턴하는 값의 자료형을 명시해야 한다
  • 리턴 값이 없는 경우도 존재한다 -> void 자료형 사용

 

 

Getter 메소드

  • 멤버 변수의 값을 반환하는 메소드로, get이라는 동사로 시작한다
  • getter라고 지칭한다
  • 메소드 안에서 이름이 겹치지 않으면, 자동으로 해당 변수는 멤버 변수의 이름으로 취급되기 때문에 this 포인터가 필요없다!

 

 

 

메소드 리턴 값과 파라미터 정리!

  • 메소드는 input과 output이 있을 수 있고, 각각 파라미터와 리턴 값을 갖는다
  • 메소드는 0개이거나 1개 이상의 파라미터를 가질 수 있다
  • this 키워드는 생성된 개게 자기 자신을 가리킨다
  • 메소드 내부의 변수 명과 객체의 멤버 변수 명이 중복될 경우 this를 사용한다
  • private 멤버 변수의 값을 변경하거나 반환하는 메소드를 각각 setter, getter라고 한다
  • 메소드의 리턴 값이 있을 경우, 리턴 값의 자료형과 return 문을 명시한다
  • return 문은 메소드 내에서 여러 번 사용은 가능하나, 권장되지는 않는다

 

728x90

댓글