이 글은 객체 지향 언어(C#, JAVA 등)에서 흔히 사용되는 용어를 정리하기 위해 작성하였다. 흔히들 말하는 객체나 클래스, 추상화, 인스턴스화 같은 무심코 사용하는 단어가 정확하게 어떤 의미를 지니고 있는지 일목요연하게 알 수 있도록 하기 위한 글이다.
- OPP(Object Oriented Programming)-
0. 멤버(Member)
- 객체 혹은 클래스의 변수나 메소드를 말한다. 이에 대한 설명은 아래에 나열한다.
1. 객체(Object, 오브젝트)
- 객체 지향 프로그래밍에서 가장 기본이 되는 부분으로, 데이터(실체)와 그 데이터에 관련되는 동작(절차, 방법, 기능)을 모두 포함한 개념이다. 예를 들어 기차역에서 승차권을 발매하는 경우, 실체인 '손님'과 동작인 '승차권 주문'은 하나의 객체이다. 실체인 '역무원'과 동작인 '승차권 발매'도 하나의 객체이다. 같은 성질(구조와 형태)을 가지는 객체는 등급으로 정의하고, 같은 등급에 속하는 객체는 그 등급의 3)인스턴스라고 한다.
2. 클래스(Class)
- 객체 내부의 데이터 구조와 그 조작을 정리하여 정의한 것으로 동일한 속성, 오퍼레이션, 관계 등을 가지고 있는 하나 이상의 유사한 객체들의 집합이다.
3. 인스턴스(Instance)
- 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을 정의하고 그 다음에 ‘본인 목록(my list)’이라는 객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 4)변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 한다.
- 인스턴스화 했다는 것은 new를 사용해 클래스를 복제하여 새로운 객체를 생성, 바로 사용이 가능하게 만들었다는 것을 의미한다.
4. 변수(Variable)
- 값이 저장된 기억장소. 객체는 변수에 자신의 상태를 저장하며, 변수는 5)식별자로 명명된 데이터 항목이다.
5. 식별자(Identifier)
- 프로그래머가 프로그램에서 사용하는 자료의 항목, 즉 변수나 함수, 상수, 배열, 클래스, 6)메소드 등에 부여하는 이름을 말한다.
6. 메소드(Method)
- 행위가 정의된 것. 필요할 때 호출(실행)될 수 있도록 선언과 문장들을 하나의 이름으로 그룹화한 것으로, 클래스의 일부이다. 일반적으로 함수와 같은 의미로, 하나의 객체가 내부적으로 전달받은 메세지에 따른 알맞는 기능을 수행한다. 즉 메소드란 개체에 포함된 고유한 동작을 의미한다.
7. 멤버함수(Member function)
- 클래스 내에서 선언된 함수. 8)멤버변수들을 통제하기 위해 사용한다. public, protected, private와 같은 접근 지정자를 사용하며, 외부에서 멤버함수를 통해 멤버 변수에 접근하기 위해서는 public을, 내부에서만 사용하기 위해서는 private를 주로 사용한다. 동일 클래스 내에서 존재하는 멤버함수끼리는 서로 호출이 가능하다.
public : 모든 패키지/ 클래스에서 접근 가능
protected : 모든 패키지/크래스에 관계 없이 자손클래스만 접근 가능
default : 같은 패키지 내에서만 접근 가능
private : 같은 클래스 내에서만 접근 가능
열거된 순서는 허용하는 수치가 가장 높은 순이다.
8. 멤버변수(Member variable)
- 클래스나 객체의 멤머로, 클래스 내에서 선언된 변수를 의미한다. 절차지향 프로그래밍(C언어 등)의 구조체에서 필드와 항목이라고 칭했던 것을 class에서 멤버 변수라고 칭한다.
static : 객체로 접근해야 하는 것을 클래스로 접근할 수 있도록 설정해 주는 것
final : 변결될 수 없는 클래스, 메소드, 변수 앞에 붙어서 상속이나 오버라이딩을 할 수 없도록 한다.
9. 캡슐화(Encapsulation)
- 객체의 자료와 행위를 하나로 묶고 실제 구현한 내용을 외부에 감추는 것. 이렇게 캡슐화된 객체의 행위는 외부에서 볼 때 실제가 아닌 추상적인 것이 되어 10)정보은닉이 되어진다.
10. 정보은폐, 정보은닉(Information Hiding)
- 객체가 캡슐화를 통해서 내부의 자료와 오퍼레이션의 구현 내용을 감추는 것. 즉 외부의 무분별한 접근을 막는 것이다. 따라서 클라이언트에게 구현 사항을 수믹기 때문에 클라이언트는 UI에 의존하게 된다.
11. 상속(Inheritance)
- 클래스가 다른 클래스에서 속성을 상속받아 고유의 속성을 추가하도록 하는 것이다. 12)슈퍼클래스로부터 13)서브클래스에 변수 및 메소드를 상속시켜주며, 서브클래스는 상속받은 것에 자신의 특성을 14)추가하거나 15)대치할 수도 있다. 이러한 성질은 소프트웨어의 재사용성을 증대시킨다.
12. 슈퍼클래스(Super class)
- 최상위 클래스. 자바에서는 Object 클래스가 최상위에 위치하며, 모든 클래스는 직간접적으로 Object 클래스를 상속받는다. 이 클래스의 코드는 여러번 재사용할 수 있다.
13. 서브클래스(Sub class)
- 슈퍼클래스로부터 상태와 변수 및 메소드를 상속받는 것 외에 자신의 특성 또한 추가할 수 있다.
14. 오버로딩(Overloading)
- 메소드 혹은 연산자 같은 프로그래밍 언어 구조에 추가적으로 의미를 부여하는 것이다. 자바에서는 메소드의 중복정의는 허용하지만 연산자의 중복 정의는 허용하지 않는다.
15. 오버라이딩(Overriding)
- 상속받은 메소드 정의를 서브 클래스의 목적에 따라 변경하는 것. 상위 클래스에서 정의하였던 메소드의 기능을 상속받은 하위 클래스가 그 기능을 변경하고자 할 때 사용한다. 오버로딩이 추가라면 오버라이딩은 변경이다.
16. 다형성(Polymorphism)
- 하나의 인터페이스를 통해 서로 다르게 구현된 것들을 숨길 수 있는 능력. 동일한 메세지라도 수신하는 것이 누구인가에 따라 각각 다른 기능을 수행하는 것을 말한다. 예를 들면 한 회사의 TV 제품은 그 회사가 생산한 어떤 리모콘으로도 조종이 가능한 것과 같다.
17. 예약어(Reserved word)
- 문장의 뜻을 전달해주는 의미와 용법이 정해져 있는 단어. 사용자가 변경 불가능하며, 정해진 의미, 정해진 용도에만 사용할 수 있다.
18. 추상화(Abstraction)
- 한 개체를 다른 모든 개체와 구별할 수 있는 본질적인 특징으로 구분하는 것으로, 불필요한 부분을생략하고 객체의 가장 중요한 것에만 중점을 두어 간략화 시킨 것이다. 추상 클래스는 온전한 클래스가 아니므로 객체를 생성할 수가 없다.
19. 필드(Field)
- 클래스에서 속성이 정의된 영역. 멤버변수와 비슷하다고 보면 이해하기 쉽다.
20. 생성자(Constructor)
- 클래스를 만들게 되면 클래스명과 동일한 원형의 메소드가 자동으로 생성되는데 이를 생성자라고 한다. 객체의 구조를 인식하게 하고 생성되는 객체의 멤버변수들을 초기화하는 데 목적을 둔다.
[참조] http://donggeuri0320.tistory.com/60
http://blog.naver.com/experiments?Redirect=Log&logNo=140012155063
http://blog.naver.com/bluekisunny?Redirect=Log&logNo=120040713063
http://blog.naver.com/rapha0?Redirect=Log&logNo=110120025478
http://blog.daum.net/kimsu-23/9
네이버 백과사전
[출처] 객체 지향 프로그래밍 용어 정리|작성자 엔세리우스
'Develope_Web&App > 01_Java & JavaFX' 카테고리의 다른 글
[JSP] 서블릿(Servlet)이란? (0) | 2021.02.18 |
---|---|
MyBatis란 무엇인가? (0) | 2021.02.18 |
(혼공자) CH12 스레드 (0) | 2021.02.08 |
(혼공자) CH11 기본 API 클래스 (0) | 2021.02.08 |
(혼공자) CH9 중첩 클래스와 중첩 인터페이스, CH10 예외처리 (0) | 2021.02.08 |
Uploaded by Notion2Tistory v1.1.0