Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

객체 지향 프로그래밍 본문

프로그래밍 언어/Java

객체 지향 프로그래밍

세레프 2023. 4. 6. 06:15

 프로그래밍 언어에는 절차적으로 진행되는 절차 지향 언어와 객체를 통해 진행되는 객체 지향 언어로 구별된다. 

절차 지향 언어 객체 지향 언어
하나의 프로그램을 절차, 순서에 따라 작성하는 언어 하나의 프로그램을 객체를 통해 작성하는 언어
C언어 Java, C++

 이때 이 두 언어는 서로 반대관계가 아닌, 무엇을 관점을 두냐에 따라서 제작방법이 달라지는 독립적인 관계이다. 

 

 절차 지향언어하나의 프로그램을 제작할 때, 명령어의 절차를 위주로 작성한 뒤, 명령어의 순서에 따라 진행되는 언어이며, 객체 지향언어하나의 프로그램을 제작할 때,  만들어진 객체의 관계를 위주로 하나의 프로그램을 완성한 뒤, 객체들의 상호작동에 따라 진행되는 언어이다. 

 

 즉, 절차 지향 언어는 위에서 부터 순차적으로 실행이 되며, 객체지향언어는 객체에게 역할을 나누고 사용하고자 하는 부분에서 각 객체를 작동하도록 실행이 된다. 

 

객체

 객체 현실의 물리적인 존재나 추상적인 생각중에 특징을 가지고 있으면서 식별 가능한 것으로, 특징을 가지는 독립적인 실재대상를 말한다. 예를 들면, 물리적인 책, 자동차, 가방과 추상적인 강의, 학과, 요구가 객체가 될 수 있다.

 객체는 속성과 기능(동작)이라는 특징으로 구성되어 있는데, 이는 객체를 설계할 때, 각각 데이터 변수와 메소드로 정의가 된다. 그리고 이렇게 생성된 객체는 선언을 통해 프로그램에서 재사용이 된다.

 

객체 지향 프로그램

 객체 지향 프로그램은 기능을 표현한 코드를 객체화하여, 독립적으로 사용할 수 있도록 하는 체계로, 현실에 존재하는 사물과 개념들을 소프트웨어적으로 구현하고, 그 구현된 객체들이 상호작용을 통해 데이터를 처리하는 방식이다. 객체를 통해 조립하듯이 프로그램을 작성하기 때문에, 유연하고 변경이 용이하다는 점이 장점이 된다.

 

 

 객체 지향 프로그램에는 추상화, 상속화, 캡슐화, 다양성이라는 특징을 가지고 있다.

  • 추상화 

 추상화실제 대상들의 공통적인 특징을 모아놓고 기능을 객체화하는 것으로, 하위 객체들의 공통적인 기능이나 속성을 추출해서 새로운 상위 객체를 생성한다.

실제 대상의 공통점을 추출하여 자동차라는 객체를 생성

 

  • 상속화

 상속화 추상화를 통해 만들어놓은 특징의 객체를 기반으로 다른 객체에 해당 객체의 특징을 생성하는 것으로, 상위 객체로부터 물려받은 여러 개의 하위 객체들은 상위 객체의 속성과 기능들을 소유하고 있다. 즉 객체마다 기능과 속성을 반복적으로 정의할 필요 없이, 상위 객체로 정의해두는 것으로 간편하게 재사용할 수 있다.

자동차라는 부모객체를 이용하여 택시라는 자식객체에게 특징을 상속

 

  • 캡슐화 

캡슐화부모 객체의 특징을 하나의 캡슐로 만들어서 데이터를 보호하는 것으로, 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 하여 각 객체를 안전하게 지키고자 하는 목적을 가지고 있다.

 

 

  • 다형성 

 다형성이란 같은 모양을 갖고 있지만 다른 형태를 가질 수 있는 성질로, 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 변화하는 특징이다.

 다형성에는 오버로딩과 오버라이딩이 있으며,  오버로딩이란 명령어, 연산자, 매서드에서 한 타입의 값에만 적용되는 것이 아닌, 여러 타입의 값에 같은 이름으로 같은 기능을 실행하는 중복정의이며, 오버라이딩이란 자식클래스에서 부모클래스로 부터 받아온 메서드나 변수를 다시 정의하는 재정의이다. 

 

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

정적 멤버  (0) 2023.04.08
클래스  (0) 2023.04.07
메서드 오버로딩  (0) 2023.04.05
메서드  (0) 2023.04.04
배열 지원 함수  (0) 2023.03.31
Comments