반응형

객체지향 프로그래밍에 입문하는 것은 새로운 용어들을 알아가는 과정이다.

 

기초 개념은 대부분 인터넷의 자료로도 충분히 배울수 있겠지만,

 

교재로 공부하는 것이 아무래도 더 체계적인 진도로 배울 수 있다.

 

시중에는 좋은 교재들이 많이 나와있는데 남궁성 저자의 자바의 정석 기초편을 추천한다.

 

 

자바의 정석 기초편

교육현장에서 뒤쳐지는 학생들을 위해 쓰고, 학생들에게 직접 검증받고 호평받은 책. 코딩을 처음 배우는 사람도 자바를 쉽게 배울수 있게 도와준다.

www.yes24.com

다소 딱딱한 책이지만 수학의 정석처럼 반복한 횟수에 비례하여 실력이 느는 책이다.

 

특히 자바의 객체지향에 대한 기본 설명에만 100페이지가 넘는 상세한 설명과 예제를 담고 있어서 객체지향 입문서라 불러도 손색이 없다.

 

이해가 어려운 부분이 있다면 저자 직강 유튜브를 함께 보는 것을 추천한다. 책이 나오고 2020년 버전으로 강의를 리뉴얼 해놓으셨다.

 

 

이 책이 좀 어렵다면 좀더 페이지수가 적고 쉬운 교재를 본 후에 보는 것도 추천한다.

 

사실 자바는 100% 객체지향 프로그래밍이기 때문에 코알못(코딩 알지 못하는 사람)에게는 입문언어로 적합하지 않을 수도 있다. 최근 트렌드를 보면 파이썬을 많이 추천한다. 필자 역시 파이썬을 추천하는 편이다. 파이썬도 클래스를 사용할 수 있지만 클래스를 사용하지 않고 함수형 프로그래밍도 얼마든지 가능하다는 면에서 자바보다 접근이 쉽다. 간단한 코드로 결과도 더 빨리 보여주기 때문에 동기부여가 쉽다는 장점이 있다.

 

작은 프로그램이라도 구현해보는 것과 학습 과정에만 매달리는 것은 꽤나 차이가 크다.

 

자바는 100% 클래스를 사용해야 한다. 일단 시작하면 JVM - 자바가상머신이 main 메서드가 있는 클래스부터 메모리에 로드하면서 시작한다. 따라서 클래스에 대한 이해없이 프로그래밍을 진전시키기 어렵다.

 

다른 한편으로 아직 코딩을 잘 모르지만 프로그래밍에 진지한 사람들에게는 자바 입문을 추천한다. 진지하게 배울 수록 의미가 크다. 아래 티오비 인덱스를 보면 전 세계에서 C를 제외하고 가장 많은 사용자를 가진 언어이다. C가 1위인 이유는 오래되었기 때문이다. 오래된 시스템들은 C언어로 유지가 된다. 또 IOT 분야에도 용량이 작고 빠른 C언어가 들어간다.

 

우리나라의 경우 전자정부 프레임워크가 자바의 스프링으로 지정되어 있기 때문에 자바의 가치가 높다. 정부의 IT관련 사업에 사용되기 때문에 수요가 많다.

 

클래스,객체, 인스턴스

이 포스팅에서 용어에 대한 이야기를 해보려고 한다.

 

이 내용은 이전에 포스팅한 적이 있지만 오늘은 자바 언어에서 구체적인 용어들의 구분에 대한 내용이다. 

 

 

자바 튜토리얼 (5-2) 객체와 클래스

객체란 무엇인가? 네이버 국어사전에 객체는 1. 의사나 행위가 미치는 대상 2. 문장 내에서 동사의 행위가 미치는 대상 3. 작용의 대상이 되는 쪽 음... 일단 대상이란 단어가 공통적으로 나온다. �

digiconfactory.tistory.com

 

* 자바의 클래스,객체, 인스턴스는 서로 관련되어 있다.

 

자바의 클래스는 설계도이다. 객체가 물리적, 정신적 개념이라면 클래스는 그 개념을 프로그램에 구체적으로 정의해 놓은 소스코드이다. 객체는 사람이나 동물, 자동차 같이 세상에 존재하는 그 무엇도 될 수 있다. 아니면 정신적인 개념도 된다. 사칙연산같은 수학의 개념, 주식, 돈, 법률 같은 개념도 클래스로 만들 수 있다. 우리가 생각하는 거의 모든게 클래스로 만들 수 있다. 가상현실로 옮기는 설계도이다.

 

컴퓨터게임에 살아 숨쉬는 것 같은 캐릭터 모두 클래스이다. 객체지향 프로그래밍으로 만들었건 아니건 상관없다. 게임의 캐릭터는 클래스로 구현할수도 함수로 구현할 수도 있다. C언어 같은 함수형 언어에도 구조체라는 자료형이 존재한다. 클래스에서 메서드를 제외하면 구조체와 거의 같다.

 

거꾸로 클래스로 설계한 것을 실제 세계에 만들 수도 있다. 새로운 자동차를 만들기 전에 컴퓨터로 시뮬레이션 해볼 수도 있다. 클래스의 개념으로 가상현실과 현실을 넘나드는 것이다.

 

클래스는 인간의 DNA와도 비슷하다. 인간의 DNA가 복제되는 것 처럼 클래스의 설계도를 가지고 복제할 수 있다. 이 클래스를 복제한 것을 인스턴스라고 한다. 설계도가 있으니 복사는 무제한으로 할 수 있다.

 

인스턴스를 100개 생성한다고 가정한다. 인스턴스 1번부터 100번까지 메모리상에 올라갈 것이다. 프로그램이 실행되는 도중 이들의 상태가 변하기도 하고(변수) 특정 코드블록을 실행하기도 한다(메서드) 인스턴스 한개도 없어도 클래스는 설계도로써 존재한다. 인스턴스를 만들기 전에 반드시 클래스가 있어야만 한다.

 

인스턴스를 지칭할 때 객체라는 말도 허용된다. 사실 객체라는 용어는 좀 혼란스럽다. 사람 객체, 캐릭터 객체 처럼 현실의 사물을 지칭할 때도 쓰고 인스턴스에게도 객체라고 말 할수 있다. 자바 코드에서 객체는 인스턴스를 대표하는 개념이다.

 

객체는 두가지 의미로 사용된다.

 

1. 개념에서 객체로써의 의미

 

2. 코드 안에서 인스턴스를 대표하는 의미

 

객체라는 용어가 나올 때 문맥을 먼저 파악하면 이해가 빨라진다.


개념은 하루아침에 익숙해지지 않는다. 자바 프로그래밍을 꾸준히 하다보면 자연스럽게 내 몸에 체화되서 익숙하게 될것이다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드