티스토리 뷰

728x90

개념

객체(Object)

  • 모든 실재하는 대상 
  • 데이터와 관련된 알고리즘(메서드)를 하나의 단위로 묶어 놓은 것 
  • 객체들은 메서드를 통해 상호작용. 
  • 객체지향 프로그래밍(OOP): 객체 단위로 코드를 작성하며, 객체 간의 상호작용으로 프로그램을 설계
  • 객체 모델링: 현실세계의 객체를 SW 객체로 설계하는 것 

 

클래스(Class)

  • 클래스는 개별 객체를 만들기 위한 설계도
  • 객체는 붕어빵이라고 할 때, 클래스는 붕어빵틀을 의미. 

 

인스턴스(Instance)

  • 특정 클래스를 통해 생성된 하나의 객체(실제 메모리에 생성) 
  • 인스턴스는 클래스의 한 사례

 

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

Abstraction(추상화)

  • 객체의 불필요한 세부 사항을 숨기고, 필요한 인터페이스만을 제공, 구현에 의존하지 않는 설계
  • 오버라이딩(overriding): 부모 클래스로부터 상속받은 클래스를 자식 클래스에서 재정의 할 수 있다. (메소드의 이름, 매개 변수, 리턴 값은 부모 클래스와 같아야 한다.)
  • 오버로딩(overloading): 같은 이름을 가진 메서드가 있더라도 매개변수의 수, 타입이 다르면 같은 이름의 메서드를 정의 할 수 있다. (리턴 값만 다른 경우에는 오버로딩할 수 없다.)

 

Polymorphism(다형성)

  • 상속 또는 구현 관계에 있을 때  객체들이 맥락에 따라 서로 다른 방식으로 동작하는 것

 

Encapsulation(캡슐화)

  • 객체의 데이터와 메서드를 하나로 묶고, 외부로부터 객체의 세부 사항을 숨기는 것 
  • 데이터 보호 (data protection) , 데이터 은닉 (data hiding)

Inheritance(상속)

  • 기존의 설계도를 재사용(확장), 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받는 것 

 

객체지향 프로그래밍의 장점

  • 코드의 재사용성
  • 유지보수성 
  • 유연성과 확장성 

 

클래스

함수

  • 특정 작업을 수행하는 문장들의 모임
  • 실행 가능한 코드의 단위
  • 구성: 반환 타입(리턴 값), 함수 이름, 매개변수, 함수 몸체(기능)

 

클래스

  • 객체를 생성하는 데 사용되는 틀 혹은 청사진(blueprint)
  • 사용자 정의 "데이터 타입"

 

구성 요소

  • 멤버 변수(member field): 객체의 속성, 상태 
  • 멤버 메서드(member method): 멤버 메서드, 객체의 동작, 행위(로직)
  • 생성자(Constructor): 객체가 생성될 때 자동으로 호출되는 메서드  
  • 중첩 클래스(Nested Class): 클래스 내부에 존재하는 클래스 

 

클래스 선언

[접근 제어자] [final:abstract] class 클래스 이름{
	//멤버 변수, 필드 (속성 정의)
    [접근 제어자] [static] [final] 데이터 타입 변수 이름 [= 초기값];
    
    //생성자
    [접근 제어자] 클래스 이름([매개변수들]){
    	생성자 본문 
    }
    
    //메서드 (기능 정의)
    [접근 제어자] [static] [final] [반환 타입:void] 메서드 이름([매개변수들]){
    	메서드 본문 
    }
}
  • 접근 제어자: 클래스, 멤버 변수, 생성자, 메서드에 대한 접근 권한을 설정.
    1. public: 모든 클래스에서 접근 가능
    2. protected: 같은 패키지 내에서와 상속받은 클래스에서 접근 가능
    3. private: 해당 클래스 내에서만 접근 가능
  • final: 클래스, 메서드, 변수에 적용 가능
    1. 클래스: 상속할 수 없는 클래스.
    2. 메서드: 오버라이드할 수 없는 메서드.
    3. 변수: 값을 변경할 수 없는 상수
  • abstract: 클래스와 메서드에 적용 가능.
    1. 클래스: 구현되지 않은 추상 클래스가 되어 직접 인스턴스를 생성할 수 없으며, 반드시 서브클래스에서 상속받아야 한다.
    2. 메서드: 구현되지 않은 추상 메서드가 되어 서브클래스에서 반드시 구현해야 한다.
  • static: 클래스의 멤버 변수나 메서드에 적용되며, 해당 멤버는 클래스 수준에서 공유된다. 
  • 데이터 타입: 변수의 데이터 유형을 지정 EX) int, float, double, boolean, char
  • 반환 타입: 메서드가 반환하는 값의 데이터 유형을 지정. 반환 타입이 void인 경우 메서드는 값을 반환하지 않는다.
  • 매개변수: 메서드나 생성자가 호출될 때 전달받는 입력 값. 각 매개변수는 데이터 타입과 변수 이름으로 정의.
728x90