IT 개발노트

객체지향의 등장 배경과 이해 본문

기초튼튼/JAVA

객체지향의 등장 배경과 이해

limsungju 2019. 1. 18. 22:06

1. 객체지향 이전의 프로그래밍
1.1 절차지향

: 코드를 위에서부터 쭈욱 내려오면서 실행되는방식의 언어이다.

문제점
- 1부터 10까지의 합을 구하는 것을 5부터 100까지로 변경하게 되면 동일한 로직이지만 다시 코드를 수정해야된다.
- 기존의 로직을 다시 사용하게 될때, 다시 코딩을 하는 방법과, 기존 코드를 카피해서 재사용하는 방식이 있으나, 두 방법 모두 비효율적이다.
- 동일한 로직의 코드가 문서 내에 넘쳐나고, 코드의 양이 길어지며 추후에 유지보수가 어렵다.

예시 1

1
2
3
4
5
6
7
8
9
10
11
12
    public String evenOdd(int sum) {
        
        String r = new String();
        
        if((sum % 2== 0){
            r = "짝수 입니다.";
        } else {
            r = "홀수 입니다.";
        }
        
        return r;
    }



문제해결
: 절차지향 언어의 문제점을 해결하기 위해 등장한 방식이 함수 또는 메소드의 사용입니다.
로직만 만들어 놓고, 그때 그때 소스(데이터)를 주면 메소드가 알아서 결과값을 반환하는 방식입니다.

1.2 메소드 프로그래밍의 한계
: 메소드를 이용하면 로직의 재사용이 가능하여 개발을 효율적으로 할 수 있었다.
하지만, 메소드만 가지고는 많은 양의 로직을 처리하기에는 한계가 있다.
한 문서 내에 메소드의 수가 많아질 경우 추후 유지 보수에 많은 어려움이 발생된다.

2 객체지향의 등장 배경과 이해
: 메소드를 이용한 방식으로 개발자들은 아주 많은 효율성을 느끼게 되었으나, 메소드를 이용한 방식에도 한계는 있었다.
데이터가 많아지고, 메소드가 많아짐에 따라 코드의 양이 많아지고, 유지보수가 어려워지기 시작했다.
그래서 등장한 방식이 객체지향 프로그래밍이다.

2.1 객체지향언어란?
: 객체지향언어는 기존의 프로그래밍언어와 다른 전혀 새로운 것이 아니라,
기존의 프로그래밍 언어에 몇가지 규칙을 추가한 보다 발전된 형태의 것이다.

2.2 객체지향언어의 주요 특징
-코드의 재사용성이 높다

-> 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
- 코드의 관리가 용이하다.
-> 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
- 신뢰성이 높은 프로그래밍을 가능하게 한다.
-> 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,
코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

2.3 객체란?
: 같은 종류의 데이터와 로직이 함께 있는 구성체이다.
* 객체는 메소드와 비슷하지만 상위개념이라고 할수있다. 메소드는 프로그램의 종속적이지만, 객체는 독립체이다.

2.4 클래스와 객체
2.4.1 클래스의 정의와 용도
- 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다. (객체의 설계도 또는 틀이라고 이해하면 쉽다.)
- 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다. (객체는 클레스에 정의된 대로 생성된다.

2.4.2 객체의 정의와 용도
- 객체의 정의 : 실제로 존재하는 것, 사물 또는 개념이다.
- 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다르다.

- 유형의 객체 : 책상, 의자, 자동차, TV와 같은 사물
- 무형의 객체 : 수학공식, 프로그램 에러와 같은 논리나 개념

2.5 객체의 생성
: 객체는 클래스로부터 생산(복사본)된다.
예를들어 색상이 정해지지 않은 자동차를 만들어 놓고, 소비자의 요구에 따라서 색상을 칠한다.
-> 색을 칠하기 전의 자동차가 클래스이며, 소비자(개발자)의 요구에 따라서 색을 칠해서 완전한 자동차(객체)가 만들어 진다.

2.6 데이터 처리 방법
: 색상이 결정되지 않은 자동차를 클래스라고 한다고 했을때, 구매자가 색상을 결정하여 계약을 하면, 그때 클래스로부터
객체가 생성된다고 했다. 그때 생성된 객체는 계약을 한 소비자의 것이다. 또 다른 소비자가 다른 색상으로 계약을 하면 또 하나의 객체가 생성된다.


2.7 객체자료형과 변수와의 관계
2.7.1 변수(기초데이터)와 객체의 메모리 구조
: 기초 데이터 변수는 메모리상에 무엇이든지 담을 수 있는 주머니를 만들어 놓고 주머니에 값을 직접 넣는다.
객체자료형은 메모리상에 객체의 주소값을 저장한다.



2.7.2 객체변수 사용법
: 클래스이름 객체변수명(임의지정) = new 생성자();
-> ClassName className1 = new ClassName();
*  생성자의 이름은 클래스의 이름과 같아야 하고, 리턴 값이 없다.

2.7.3 객체안의 데이터
: 객체는 클래스로부터 생성된다. 생성된 객체는 동일한 클래스에서 생성되었다 하더라도 완전한 독립체이다.
따라서 객체 안에 종속되어 있는 데이터는 완전히 별개의 데이터이다.

예시 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.javalec.methodEx;
 
import java.util.Scanner;
 
public class GuGuDan {
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        int input = scanner.nextInt();
        
        GuGuDan guGuDan = new GuGuDan();
        guGuDan.gugudan(input);
        
    }
    
    public void gugudan(int i) {
 
        for(int j=1; j<10; j++){
            System.out.println(i + " * " + j + " = " + (i * j));
        }
        
    }
}




'기초튼튼 > JAVA' 카테고리의 다른 글

오버로딩이란?  (0) 2019.01.19
변수의 종류와 특징  (0) 2019.01.18
배열이란?  (1) 2019.01.17
제어문과 루프란?  (0) 2019.01.16
연산자란?  (0) 2019.01.15