본문 바로가기

IT/Java

객체지향언어 및 객체 개념

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

****자바 주요이론****


※ 프로그래밍의 기초인 변수, 배열 등은 설명하지 않겠습니다. 한번에 모든 내용을 작성하기에는 시간이 없으니

   꾸준히 시간날때마다 알기 쉽게 정리하겠습니다.


1. 객체지향언어란 무엇인가??

  컴퓨터 프로그래밍언어는 크게 절차지향언어와 객체지향언어로 나눌 수 있습니다.

 절차지향언어는 단순하게 프로그램을 작성하면 컴퓨터가 위에서 순서대로 읽으면서 컴파일하는 언어입니다. 

 그 예로 COBOL, FORTRAN, C언어가 있습니다. C언어를 해보신 분은 알 수 있지만 구조체를 선언은 해당 구조체를 사용하기  전, 위에서 정의가 되어있어야합니다. 그리고 구조체안에는 변수만 존재해야 합니다.(함수X)


 객체지향언어는 절차지향언어와 비슷해 보입니다.

 하지만 클래스라는 개념이 도입되면서 구조체안에 그 구조체안의 변수를 제어하는 함수가 추가되었습니다.

즉 하나의 객체는 그 객체가 가지는 값인 자료형과 그 자료형을 다루는 함수가 같이 포함됩니다.
그래서 그 객체라고 불리는것을 다른프로그램에 이식해도 약간만 수정하면 사용할 수 있습니다.
이러한 점은 C언어에는 없지요. 즉 이식성이 뛰어나다는 것입니다. 물론 잘 설계된 클래스라는 전제하입니다.

이해가 되는 분도 있을거고 안되는 분도 있을 겁니다. 그냥 여기에서는 구조체, 클래스의 차이만 기억하시면 됩니다.


절차지향 

객체지향 

구조체 

클래스 

구조체(변수 들의 집합) 

클래스(변수 및 function 들의 집합) 

main function에서 사용전 윗 line에 정의 되어있어야 함 

위치에 상관없이 정의만 되어 있으면 됨 


구조체는 변수들의 집합! 클래스는 변수 및 function들의 집합!!


 그럼 객체란 무엇일까요??

객체는 이 세상의 모든 것!! 입니다. 지금 여러분 앞에 책상, 노트북, 필통 등등이 있죠? 이 모든 것이 객체입니다.

이 중 필통을 예로 들겠습니다. 여러분이 자바로 필통을 구현해야 합니다. 필통안에는 샤프, 지우개,볼펜이 있다 가정합니다.



소스보기를 통해 작서된 코드를 보면 총 4개의 클래스가 구현되어있습니다.

PencilCase이라는 필통클래스 안에 Sharp, Eraser, Pen클래스가 있지요?? 우리의 필통안에 샤프, 지우개, 볼펜이 있는 것과

같은 이치입니다. Sharp에는 SharLead라는 샤프심 객체가 존재하며, Pen클래스에는 Ink라는 객체가 존재합니다.

아마도 여러분도 저처럼 구현했을 겁니다.

자!!!! 근데!!! 제가 설명한 글을 보면 어떤건 클래스라하고 어떤건 객체라 하고 헷갈리시죠??

클래스는 설계도(뼈대)라고 생각하시면 됩니다. 코드상에서 작성한 것들은 모두 클래스입니다. 저렇게 정의된 구조로 

사용하겠다는 설계도인 셈이죠. 그러면 저 클래스가 어떻게 객체가 되느냐.....

위 소스에서 PenCilCase pc = new PenCilCase(); 가 호출되는 순간 PenCilCase타입의 pc객체가 생성되는 겁니다.

즉, 간단히 말해서 클래스는 설계도 이고 설계도를 기준으로 생성하는 순간 객체가 되는 것!! 이라고 생각하면 됩니다.

객체를 생성하는 방법은 new라는 연산자를 통해 생성합니다.


객체지향 언어를 경험하지 않고 제 얘기만 듣는다면 완벽히 이해가 안될 수 있습니다.

우선 여기서는 간단한 개념만 가져가시고 직접 C++이나 자바를 사용하여 프로그래밍을 하면서 많은 에러를 발생시키고 수정해

보세요. 그래야 객체지향, 객체 라는 개념이 더 완벽히 잡힐 것입니다.


컴퓨터를 배우면서 처음부터 완벽히 알고 넘어가자!!는 잘못된 생각같아요. 100% 이해가 안가더라도 개념만 어느정도 이해하고

그 뒤에 부분을 배우다보면 저절로 앞부분이 이해가 되더라구요. 컴퓨터는 모든게 다 연관되어 있기 때문인거 같아요.


다음 시간에는 상속에 대해 작성하도록 하겠습니다.










'IT > Java' 카테고리의 다른 글

BubbleSort 및 ArrayList, String API 요약  (0) 2018.05.08
자바에서 XML다루기(2)  (0) 2015.11.13
Java Compile 에러 모음  (0) 2015.11.12
자바에서 XML다루기(1)  (0) 2015.11.11
이클립스 사용팁 및 단축키 모음  (0) 2015.11.11