ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6-1. 클래스
    Java 2021. 7. 28. 23:08

    객체 지향 프로그래밍(OOP)

    소프트웨어를 개발할 때 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programming)이라고 한다.

     


     

    객체 지향 프로그래밍의 특징

    1. 캡슐화(Encapsulation)
      • 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다.
      • 외부 객체는 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
      • 사용 목적은 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
    2. 상속(Ingeritance)
      • 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 한다.
      • 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와준다.
      • 반복된 코드의 중복을 줄여준다.
    3. 다형성(Polymorphism)
      • 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다.
      • 자바는 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용한다.
      • 다형성의 효과로 객체는 부품화가 가능하다.
      • 예를들어 자동차를 설계할 때 타이어 인터페이스 타입을 적용했다면 이 인터페이스를 구현한 실제 타이어들은 어떤 것이든 상관없이 장착(대입)이 가능하다.

     

     


     

    클래스의 구성 멤버

    1. 필드(Field) = 전역변수 = 멤버변수
      • 객체의 데이터가 저장되는 곳
      • 변수와 비슷하지만, 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다.
      • 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
    2. 생성자(Constructor)
      • 객체 생성 시 초기화를 담당하며, 클래스 이름으로 되어있고 리턴값이 없다.
      • new 연산자에 의해 생성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고, 객체의 주소가 리턴된다.
      • 클래스에 명시적으로 선언한 생성자가 한 개라도 있으면, 컴파일러는 기본 생성자를 추가하지 않는다.
      • 명시적으로 생성자를 선언하는 이유는 객체를 다양하게 초기화하기 위해서이다.
    3. 메소드(Method)
      • 객체 간의 데이터 전달의 수단으로 사용된다.
      • 외부로부터 매개값을 받을 수도 있고, 실행 후 어떤 값을 리턴할 수도 있다.
      • 리턴값이 없는 메소드(void)에서 return;문을 사용하면 메소드 실행을 강제 종료시킨다.
      • 클래스 외부에서 호출할 경우에는 클래스로부터 객체를 생성한 뒤, 참조 변수를 이용해서 메소드를 호출해야한다. 그 이유는 객체가 존재해야 메소드도 존재하기 때문이다.

     

     


     

    정적멤버와 static = 클래스 멤버

    정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.

    필드와 메소드 선언 시 static 키워드를 붙인다.

    정적필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트코드)를 로딩해서

    메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다.

     

     

     

     

    [자문자답 문제]

    더보기

    1. 객체지향 프로그래밍(Obejct Oriented Programming)이란?
    답) 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법이다.



    2. 객체지향 프로그래밍의 특징 3가지는?
    답)
    - 캡슐화(Encapsulation) : 
       객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 갑추는 것을 말한다.
       외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.

    - 상속(Inheritance) : 
       상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다.

    - 다형성(Polymorphism) :
       하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
       자바는 다형성을 위해 부모 클래스, 인터페이스의 타입 변환을 허용한다.
       


    3. 캡슐화를 하는 이유는?
    답) 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해서다.



    4. 상속의 장점은?
    답) 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 반복된 모드의 중복을 줄여준다.



    5. 접근 제한자의 기능을 간단히 설명하세요.
    답) 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다.



    6. 클래스의 구성멤버는 필드, 생성자, 메소드가 있다. 필드와 생성자, 메소드의 역할을 간단히 쓰세요.
    답)
    필드 : 객체의 데이터가 저장되는 곳
    생성자 : 객체 생성 시 초기화 역할 담당

    메소드 : 객체의 동작에 해당하는 실행 블록


    해당 포스트는 이것이 자바다(신용권의 Java 프로그래밍 정복)을 읽은 후 기록한 내용입니다.

    참고서적링크 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=50563128

     

    이것이 자바다

    15년 이상 자바 언어를 교육해온 자바 전문강사의 노하우를 아낌 없이 담아낸 자바 입문서. 저자 직강의 인터넷 강의와 Q/A를 위한 커뮤니티(네이커 카페)까지 무료로 제공하여 자바 개발자로 가

    www.aladin.co.kr

     

     

     

     

     

    'Java' 카테고리의 다른 글

    7. 상속  (0) 2021.08.09
    6-2. 클래스  (0) 2021.08.09
    5. 참조 타입  (0) 2021.07.07
    4. 조건문과 반복문  (0) 2021.07.04
    3. 연산자  (0) 2021.07.03
Designed by Tistory.