객체지향5 객체지향 언어의 특징(다형성) [4/4] 4. 다형성 하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것을 의미 부모클래스가 자식클래스의 값으로 대체되는 오버라이딩 같은 메소드의 매개변수(parameter)에 따라 다르게 동작하는 오버로딩 다형성 또한 상속과 마찬가지로 객체지향 고유의 특징입니다. 예를 들어 C언어에서 아래와 같은 프로그램을 만들었다고 가정하겠습니다. 서로 입력값의 갯수 또는 타입이 다르기 때문에 모두 다른 함수로 만들어줘야 합니다. "인자값을 받아서 특정한 결과값을 출력한다"라는 공통적인 행위이지만, 각자 개별적이고 독립적인 함수(일종의 객체)로 실행됩니다. 우리가 한 파일에다가 함수들을 모아둘 순 있지만 기본적으로 저 함수들은 그냥 서로 연관성이 1도 없는 개별적 함수들로 존재합니다. 저런 게 10가지가 있다면.. ▸JAVA/기본 상식 2019. 12. 9. 객체지향 언어의 특징(상속) [3/4] 3. 상속 재사용성을 극대화시키기 위한 장치 부모 클래스의 속성을 그대로 물려받음 (물론 설정에 따라 완전히 같지 않을 수 있음) 상속의 개념은 매우 쉽습니다. 자식 클래스는 부모 클래스의 속성을 물려받도록 한다는 것이죠. C언에는 상속이라는 개념이 없습니다. 그냥 기존 함수 코드를 복사해서 붙여놓고 그 아래에 더 필요한 부분을 추가해줘야 합니다. 한 두개 정도라면 별 무리가 없지만 만약 100개의 함수에 공통된 부분이 10줄 존재한다면 코드 중복이 1000줄 발생하는 문제점이 생기죠. Java에서는 상속이라는 기능을 이용해서 위 과정을 매우 직관적이고 간단하게 만들어 줬습니다. 이미 만들어둔 코드의 재활용성을 극대화시키고 거기에 코드가 간결해지는 효과도 낼 수 있습니다. 오버라이딩 같은 기능과 함께.. ▸JAVA/기본 상식 2019. 12. 9. 객체지향 언어의 특징(캡슐화) [2/4] 2. 캡슐화 내부의 동작 방법을 단단한 케이스 안으로 숨기고 사용자에게는 사용방법만을 노출시킨다. 중요 정보를 숨겨(정보 은닉) 잘못된 수정을 막고, 사용자가 쉽게 사용할 수 있도록 만들어 줌 굳이 사용자가 알 필요가 없는 부분은 접근할 수 없도록 꽁꽁 싸서 캡슐안에 넣어둔다는 의미에서 캡슐화라고 합니다. 클래스 변수(필드)가 될 수도 있고 메소드가 될 수도 있습니다. 내가 만든 클래스에서 불필요한 곳에는 직접 접근할 수 없도록 하여 리소스의 공유와 보안 사이의 균형을 맞춰주는 것입니다. 적절한 예로 해쉬 사례를 들 수 있을 것 같습니다. 제가 어떤 문자열을 주면 해쉬값으로 바꿔주는 함수를 C언어로 하나 만든다고 해보겠습니다. 함수의 기본 뼈대는 "문자열 순서에 따라 아스키코드에 특정 값을 곱해서 더.. ▸JAVA/기본 상식 2019. 12. 9. 객체지향 언어의 특징(추상화) [1/4] 그럼 객체지향언어가 가지고 있는 대표적인 특징을 기준으로 C언어와 Java를 비교해보겠습니다. 1. 추상화 (Abstract) 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것 Java에서는 하나의 객체를 추상화하여 클래스를 만든다고 표현함 C언어에서는 구조체가 Java의 클래스에 가장 가까운 개념입니다. 어떠한 목적에 필요한 타입이 다른 여러 변수를 하나의 구조체에 묶어서 정의해둠으로써, 필요할 때 그 구조 전체를 가져다 쓰는 것이죠. 사실 변수들을 각자 따로 만들어서 써도 무방하지만 구조체를 이용하면 보다 직관적으로 데이터 구조를 확인하고 사용할 수 있습니다. 이 개념이 확장되어 발전된 것이 객체이며 Java의 클래스라고 볼 수 있습니다. 같은 구조의 정보를 담는 변수.. ▸JAVA/기본 상식 2019. 12. 9. 객체지향 언어와 절차지향 언어와의 차이 Java를 하면서 가장 먼저 알아야 할 객체지향언어의 개념을 정리해봤습니다. 절차지향 언어의 대표주자인 C언어와, 객체지향 언어의 대표주자인 Java를 기준으로 설명했습니다. 먼저 절차지향언어와 객체지향언어는 대립점에 있는 개념이 아닙니다. 모든 컴퓨터 언어는 기본적으로 절차(순서)에 따라 실행됩니다. 기본적으로 객체지향언어도 절차대로 수행되는 컴퓨터 언어입니다. 그저 더 중요시하는 "사상"이 다를 뿐입니다. 어떤 프로그램이라도 절차지향언어로 만들 수도, 객체지향 언어로 만들 수 있습니다. 만드는 과정이 조금 다를 뿐입니다. 예를 들어 된장찌개를 끓인다고 가정해보겠습니다. 춘향이는 절차를 지향해서 아래와 같이 순서대로 요리를 합니다. 길동이는 객체를 지향해서 아래와 같이 미리 재료를 다 준비해두고 한.. ▸JAVA/기본 상식 2019. 12. 9. 이전 1 다음 💲 추천 글 반응형