JAVA/이론

22. [ JAVA ] 클래스(Class)와 객체(Instance)

천재단미 2024. 12. 10. 17:04
728x90
반응형

[Java] 클래스(Class)와 객체(Instance)

 

 

1. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

 
 
객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체 단위로 구조화하고 설계하는 프로그래밍 패러다임입니다. 이 방식은 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어 객체를 만들고, 이러한 객체들이 상호작용하며 프로그램을 구성합니다.

1)  객체 지향 프로그래밍의 주요 특징

(1) 추상화(Abstraction): 복잡한 내부 구현을 감추고 필요한 기능만을 외부에 노출합니다.
(2) 캡슐화(Encapsulation): 객체의 상태와 행동을 하나로 묶고, 외부 접근을 제한하여 데이터의 무결성을 유지합니다.
(3) 상속(Inheritance): 기존 클래스의 속성과 메서드를 새로운 클래스가 물려받아 코드 재사용성을 높입니다.
(4) 다형성(Polymorphism): 동일한 인터페이스를 사용하면서 객체에 따라 다른 동작을 수행할 수 있게 합니다.
 
 
2) 객체 지향 프로그래밍의 장점

  • 코드의 재사용성과 유지보수성 향상
  • 대규모 소프트웨어 개발에 적합
  • 업무 분담이 편리

 
3) 객체 지향 프로그래밍 언어

C++, Java, Python, JavaScript, Ruby, Swift 등이 객체 지향 프로그래밍을 지원합니다.
 

 
 
 
 
 

2. 클래스(Class) 

 
클래스는 객체 지향 프로그래밍(OOP)의 핵심 개념으로, 객체를 생성하기 위한 템플릿 또는 청사진 역할을 합니다.
 

1) 클래스의 정의와 특징

  • 클래스는 객체를 정의하는 틀로, 변수와 메서드를 포함합니다.
  • 객체의 속성(데이터)과 기능(메서드)을 하나로 묶어 캡슐화합니다.
  • 클래스는 객체를 생성하는 데 사용되며, 객체는 클래스의 인스턴스입니다.


2) 클래스의 구성 요소

  • 속성(멤버 변수): 객체의 상태를 나타내는 데이터
  • 메서드: 객체가 수행할 수 있는 기능이나 동작
  • 생성자: 객체 생성 시 초기화를 담당하는 특별한 메서드

 
3) 클래스와 객체의 관계

  • 클래스는 객체의 설계도 역할을 합니다.
  • 하나의 클래스로부터 여러 객체를 생성할 수 있습니다.
  • 객체는 클래스에 정의된 속성과 메서드를 가지게 됩니다.

 

4) 클래스 사용의 이점
 
(1) 코드 재사용성 향상
(2) 데이터와 기능의 논리적 그룹화
(3) 캡슐화를 통한 데이터 보호
(4) 유지보수의 용이성
 

 
 

 
 
 
 

 



 

 

3. 객체(Instance)

객체는 클래스를 기반으로 생성된 실체입니다. 

1) 객체의 정의와 특성

  • 객체는 실제로 존재하는 사물 또는 개념을 프로그래밍적으로 표현한 것입니다.
  • 클래스로부터 생성된 객체를 그 클래스의 인스턴스라고 합니다.
  • 객체는 속성(데이터)과 기능(메서드)의 집합입니다.

 
2) 로컬 변수와 멤버 변수

로컬 변수와 멤버 변수는 자바에서 변수의 두 가지 주요 유형입니다.
 

(1) 로컬 변수

  • 메서드 내부에서 선언되어 사용되는 변수입니다.
  • 메서드 내부에서만 사용이 가능하며, 메서드 실행이 끝나면 메모리에서 사라집니다.
  • 사용하는 메모리는 스택(stack) 메모리입니다.
  • 초기화하지 않으면 에러가 발생합니다.

 
(2) 멤버 변수

  • 클래스 영역에서 선언된 변수입니다.
  • 클래스의 속성과 특성을 나타냅니다.
  • 사용 범위는 해당 클래스 전체이며, private가 아니면 다른 클래스에서도 접근 가능합니다.
  • 사용하는 메모리는 힙(heap) 메모리입니다.
  • 자동으로 초기화됩니다.

 
멤버 변수는 다시 두 가지로 나뉩니다.

  • 인스턴스 변수: static이 붙지 않은 멤버 변수로, 객체를 생성해야 접근 가능합니다.
  • 클래스 변수(정적 변수): static이 붙은 멤버 변수로, 객체 생성 없이 접근 가능합니다.

 

 

 
 
4. 함수와 매서드의 차이점

 
메서드는 함수중의 하나의 종류이며, 프로그래밍에서 유사한 개념이지만, 몇 가지 중요한 차이점이 있습니다.
 
1) 소속과 컨텍스트

  • 함수: 독립적인 코드 블록으로, 어떤 객체에도 속하지 않습니다.
  • 메서드: 객체에 속한 함수로, 특정 클래스나 객체의 멤버로 정의됩니다.

 
2) 호출 방식

  • 함수: 직접 이름으로 호출됩니다 (예: functionName()).
  • 메서드: 객체를 통해 점 표기법으로 호출됩니다 (예: object.methodName()).

 
3) 목적과 사용
 

  • 함수: 일반적인 작업을 수행하며, 입력값에 따라 결과를 반환합니다.
  • 메서드: 특정 객체의 동작을 정의하고, 객체의 상태에 따라 작동합니다.

 
4) 데이터 접근
 

  • 함수: 전달된 매개변수와 전역 변수만 접근 가능합니다.
  • 메서드: 객체의 속성(멤버 변수)에 직접 접근할 수 있습니다.

 
5) 프로그래밍 패러다임
 

  • 함수: 주로 절차적 프로그래밍에서 사용됩니다.
  • 메서드: 객체 지향 프로그래밍의 핵심 요소입니다.

 
메서드는 본질적으로 함수의 한 종류이지만, 객체 지향 프로그래밍의 맥락에서 특별한 의미를 가집니다. 메서드는 객체의 행동을 정의하고 캡슐화를 통해 객체의 내부 상태를 조작하는 데 사용됩니다.
 

 
 
- Number클래스의 메서드로 만드어보세요




     //맴버변수 두개를 더해서, 리턴하는 함수


    int sum(  ){
      int sum = num1 + num2;
        return sum;
    }



    //맴버변수 두개의 평균을 구해서, 리턴하는 함수



    double avg( ){
        double avg = ( num1 + num2 ) / 2.0;
        return avg;
    }



 





        int sum = n1.sum( );
        System.out.println( sum );

        double avg = n1. avg( );
        System.out.println( avg );


         n1.print( );



 

 
 

728x90
반응형
home
}