객체 지향 프로그래밍(Object Oriented Programming)
객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
객체(Object)
객체란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다.
객체는 속성과 동작으로 구성되며 각각 필드(field)와 메소드(method)라 한다.
객체 모델링(Object Modeling)
현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 말하며, 현실 세계 객체의 대표 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의되는 과정이다.
객체의 상호작용
메소드는 객체들 사이의 상호작용 수단으로 쓰이며, 객체가 다른 객체의 기능을 이용할 때 메소드를 호출한다.
메소드 호출 형태
메소드(매개값, 매개값2, ... );
객체들은 메소드 호출을 통해 데이터를 서로 주고 받는다. 메소드 이름과 함께 전달하고자 하는 데이터를 괄호() 안에 기술하며, 이러한 데이터를 매개값이라 한다. 매개값은 메소드가 실행할 때 필요한 값이다.
리턴값은 메소드 실행의 결과이며, 호출한 곳으로 반환한다.
메소드의 리턴 값은 호출한 곳에서 변수로 대입 받아 사용한다.
객체 간의 관계
객체는 단독으로 존재할 수 있지만 대부분 다른 객체와 관계를 맺고 있으며 클래스 간 관계와 다르게 동적이다.
관계의 종류에는 집합 관계, 사용 관계, 상속 관계가 있다.
객체 지향 프로그래밍의 특징
캡슐화(Encapsulation)
객체의 데이터(필드), 동작(메소드)을 하나로 묶고 실제 구현 내용을 외부에 감춘다. 외부 객체는 객체 내부의 구조를 알지 못하여 객체가 노출해서 제공하는 필드와 메소드만 이용 가능하다.
외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해 필드와 메소드 캡슐화하여 보호한다. 캡슐화된 멤버의 외부 노출 결정을 위해 접근 제한자(Access Modifier)를 사용한다.
상속(Inheritance)
상속은 부모 객체가 가지고 있는 필드와 메소드를 자식 객체에게 물려주어 자식 객체가 사용할 수 있도록 한다.
- 코드의 재사용성을 높여준다
- 부모 객체의 필드와 메소드를 자식이 그대로 사용하여 자식 객체에서 중복 코딩을 하지 않는다.
- 유지 보수 시간을 최소화 시켜준다
- 부모 객체의 필드와 메소드를 수정하면 모든 자식 객체들은 수정된 필드와 메소드를 사용 가능하다.
다형성(Polymorphism)
다형성이란 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말한다. 프로그램을 구성하는 객체를 바꾸면 프로그램의 실행 성능이 다르게 나올 수 있다. 다형성을 구현하기 위해서는 자동 타입 변환과 재정의 기술이 필요하며, 이 기술들은 상속과 인터페이스를 통해 얻어진다.
객체과 클래스
객체를 생성하려면 설계도에 해당하는 클래스(class)가 필요하다.
- 인스턴스(Instance) : 해당 클래스로부터 생성된 객체
- 인스턴스화 : 클래스로부터 객체를 만드는 과정
동일한 클래스로부터 여러 개의 인스턴스를 생성할 수 있다.
참고링크
'IT > Java' 카테고리의 다른 글
[Java] 클래스 선언 (0) | 2024.02.29 |
---|---|
[Java] 클래스 / 인스턴스 / 메소드 (0) | 2024.02.29 |
[Java] 열거(Enum) 타입 (0) | 2024.02.27 |
[Java] 배열 복사(Array Copy) (0) | 2024.02.27 |
[Java] 배열의 객체 참조 (0) | 2024.02.27 |