본문 바로가기
일상

20240212

by 20231113 2024. 2. 12.

객체(Object)
  객체는 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡 슐화한) 하나의 소프트웨어 모듈이다.
데이터
•객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄
•속성(Attribute), 상태, 변수, 상수, 자료 구조라고도 함
함수
•객체가 수행하는 기능으로 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘
•객체의 상태를 참조하거나 변경하는 수단이 되는 것 으로 메소드(Method, 행위), 서비스(Service), 동작(Operation), 연산이라고도 함
•객체의 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있다.
- 객체가 가질 수 있는 조건을 상태(State)라고 하는 데, 일반적으로 상태는 시간에 따라 변한다.
- 객체와 객체는 상호 연관성에 의한 관계가 형성된다.
- 객체가 반응할 수 있는 메시지(Message)의 집합을 행 위라고 하며, 객체는 행위의 특징을 나타낼 수 있다.
- 객체는 일정한 기억장소를 가지고 있다.
•객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행한다.

클래스(Class)
  클래스는 공통된 속성과 연산(행위)을 갖는 객체의 집합으로, 객체의 일반적인 타입(Type)을 의미한다.
•클래스는 각각의 객체들이 갖는 속성과 연산을 정의하 고 있는 틀이다.
•클래스는 객체지향 프로그램에서 데이터를 추상화하는 단위이다.
•클래스에 속한 각각의 객체를 인스턴스(Instance)라 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴 스화(Instantiation)라고 한다.

------------------------------------

다형성(Polymorphism)
https://ko.wikipedia.org/wiki/%EB%8B%A4%ED%98%95%EC%84%B1_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)

 

다형성 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 프로그램 언어의 다형성(多形性, polymorphism; 폴리모피즘)은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변

ko.wikipedia.org

 

"예시

단형성 체계를 가진 프로그램 언어에서는 함수는 각각 한가지 의미로 식별되는 이름과 결합되어 있어 다른 동작을 구현하기 위해서는 다른 이름을 써야 한다.

예를 들어 어떤 값을 문자열 형식으로 변환하는 단순한 경우를 생각해보자. 다형성 형태 체계를 가지지 못한 언어에서는, 다음과 같이 개별 함수로 되어 있을 것이다.

//숫자를 문자열로 바꾸는 경우
string = StringFromNumber(number);

//날짜를 문자열로 바꾸는 경우
string = StringFromDate(date);

한편 다형성 체계를 가진 언어에서는, StringValue와 같은 범용 메소드 이름을 정의하여 형태에 따라 각각 적절한 변환 방식을 정의해둠으로써 객체의 종류와 상관없는 추상도가 높은 변환 형식을 구현할 수 있다.

//숫자를 문자열로 바꾸는 경우
string = number.StringValue();

//날짜를 문자열로 바꾸는 경우
string = date.StringValue();

물론 StringValue 메소드의 정의는 형태별로 따로 수행되어야 하기 때문에 전체적으로 코드의 분량이 감소하는 것은 아니다(다만 상속에 의한 재사용은 있을 수 있다). 또 무엇이 '올바른 동작'인지는 객체의 설계에 따라 달라질 수 있으므로, 다형성을 잘 다루려면 체계 전체를 파악하는 뛰어난 설계 능력이 요구된다."

 

https://brunch.co.kr/@kd4/4

 

다형성에 대해서 설명해보세요.

Overriding? Overloading? | 다향성에 대해서 설명해보세요. 객체지향 프로그래밍의 특징 중 하나인 다형성(polymorphis)은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해 주고, 같은 클래스

brunch.co.kr

"일단 관용적인 개념의 다형성은 같은 모양의 코드가 다른 행위를 하는 것을 나타냅니다. 우리가 핸드폰에 있는 키패드로 다이얼을 누르기도 하고, 문자를 하기도 하며, 심지어 게임을 하는 것까지 가능한 것처럼 모양은 같은데 다른 기능을 수행하는 것은 디바이스 기반의 다형성의 한 예라고 할 수 있습니다.

같은 맥락에서 자바 프로그래밍에 이 다형성의 개념을 녹여내는 방법은 두 가지가 있습니다. 비슷한 이름이지만 전혀 다른 개념이니 (마치 자바와 자바스크립트처럼?) 헷갈리지 않도록 주의해야 합니다.

#Overriding
오버 라이딩은 슈퍼클래스를 상속받은 서브 클래스에서 슈퍼 클래스의 (추상) 메소드를 같은 이름, 같은 반환 값, 같은 인자로 메소드 내의 로직들을 새롭게 정의하는 것을 말합니다. 이를 이용하면 하나의 슈퍼 클래스를 상속받는 여러 서브 클래스들이 같은 이름에 다른 기능을 하는 메소드를 정의하고 사용하게끔 할 수 있습니다. 오버 라이딩을 이용해서 같은 이름이지만 구현하는 클래스마다 다른 역할을 하는 메소드를 정의하고 있죠? 마치 키패드라는 모양을 가졌지만 게임을 하고, 문자를 보내는 것처럼 말이죠.

#Overloading
오버 로딩은 하나의 클래스에서 같은 이름의 메소드들을 여러 개 가질 수 있게 합니다. 단, 메서드 인자들은 달라야 합니다. ( 반환 타입은 같아도 되고 달라도 됩니다. ) 인자들의 타입이나 개수가 다르면 메소드 이름이 같더라도 어떤 메소드를 호출할지 컴파일러가 알 수 있기 때문입니다. 그런데 왜 굳이 이렇게 같은 클래스 내에서 메소드 이름을 같게 주는 것일까요? 유사한 일을 수행하면서 인자만 다른 메소드들에 대해 각기 다른 이름을 준다면 사용하기 매우 불편할 것입니다. 마치 키패드에 문자용 키패드를 따로 만들고, 게임용 키패드를 따로 만드는 것처럼 비효율적인 것이죠. 

다형성의 개념을 물어보는 질문들은 보통 OOP(객체 지향 프로그래밍,Object-Oriented Programming)가 왜 다형성을 왜 구현했는지, 어떻게 구현했는지 물어보는 게 핵심이고 추가적으로 오바라이딩과 오버로딩의 특징에 대해서 잘 알고 있냐는 확인하는 질문이기도 합니다."

 

https://opentutorials.org/module/516/6127

 

다형성 - Java

이번 시간에는 다형성(Polymorphism)이라는 주제에 대해서 알아보자. 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 키보드의 키를 통해서 비유

opentutorials.org

 

'일상' 카테고리의 다른 글

20240214  (0) 2024.02.14
20240213  (0) 2024.02.13
20240211  (1) 2024.02.11
20240210  (0) 2024.02.10
20240209(from20240130)  (1) 2024.02.09