Kim-Baek 개발자 이야기

자바 기본 (8) - 이클립스 사용, 객체지향과 절차지향 본문

개발/java basic

자바 기본 (8) - 이클립스 사용, 객체지향과 절차지향

김백개발자 2020. 9. 29. 02:36
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다

 

◎ IDE (Intergrated (통합), Development (개발), Environment(환경))
 - javac.exe, java.exe 와 같은 개발에 필요한 여러 프로그램을 묶어준 것.프로그램의 개발 Tools 이다.( Eclips, Intelli J, NetBeans 가 대표적)
-> Plug in 기능이 있어 tool을 개발해 기능추가가 가능 (확장성)

◎이클립스의 사용
- Perspecitive ( 개발 Tool 별 전체화면 )
-> 이클립스 안에는 자바, 디버깅, 형상관리 등 어러 프로그램이 내장되어 있다. 이때 각 각 개발하고자 하는 Tool 마다 화면이 다른데, 이 화면이 Perspective 이다. (Plug in 으로 추가 설치가 가능하다)

- View
-> perspective 를 구성하는 화면이다. 자바를 개발하는 화면도 소스코드를 입력하는 에디터, 탐색기 등 다양한 뷰로 구성이 되어있다.

- Workspace
-> 다양한 프로젝트를 저장하는 폴더이다. 프로젝트는 개발의 기본 단위가 되는 파일이며 메모장, 계산기와 같은 프로그램은 하나의 프로젝트가 된다. 프로젝트에 소스코드가 작성이 되며, Workspace에 소스코드가 작성되는 것이 아니다.

◎이클립스의 기본설정
- 위에 있는 메뉴에서 window ->  preferences 검색창에 spell 검색 -> Enable spell checking 해제 : 퍼포먼스를 많이 잡아먹는다.

- font 검색  basic -> Text font -> edit 을 통해 기본 폰트 변경가능


- General -> appearance 자신의 원하는 테마로 변경 가능

- 첫 화면이 이클립스의 기본 perspective이다. 우측상단 + 버튼을 통해 다른 프로그램의 perspective로 변경 가능


- window -> show view ( 현재 perspective 와 관계 된것만 볼 수 있는데, other 를 누르게 되면 다른 perspective 의 것도 가능)

- 다시 defaulf 로 돌아가고 싶다면 winodw -> perspective -> reset
package explorer 에서 자바 프로젝트 생성


- src 폴더에 class 생성해서 자바프로그램을 만들 수 있다.


- 실행의 단축기 Ctrl + f11


- 에러는 세군데에서 알려준다. 틀린 코드에 빨간색 라인이 그어지고
왼쪽에는 화면 비율에 맞게 에러 아이콘이 뜨며, 오른쪽에는 전체 화면 비율에 맞게 에러 아이콘이 나타난다.


- 해당 뷰만 전체화면으로 하기위한 단축키 Ctrl + m


 절차지향과 객체지향
- 둘 다 프로그램이 실행될 때 순서가 있는 것은 동일하다. 하지만 객체지향의 경우 순서를 보기전에 '객체'라는 모듈을 확인한다. 절차는 둘 다 중요하다. 단지 만드는 방식의 차이이다.

※ Program 은 Data와 동작으로 이루어져있다. 프로그램은 Data(값)을 조작하는 것을 의미한다.  -> Data는 값이나 변수가 되며, 조작은 동작 or 메소드, 함수가 된다.

 예전에는 순소대로 프로그램을 짰다. -> 사람이 일하던 방식과 유사하게 프로그램이 작성이 되었다.
ex) 1. 재료 준비 2. 요리한다. 3. 차린다. 4. 먹는다. 5. 치운다
         -> 1번의 경우 재료가 data, 준비하는 것이 동작이 된다.

 절차지향프로그래밍
- 프로그램안에 그 프로그램에서 사용할 모든 데이터와 동작이 들어가 있고 이것을로 절차에 맞게 조작하자! -> 절차가 가장 중요한 포인트

-> 예전에는 program의 규모가 크지않아 이렇게 짜더라도 큰 문제가 있지 않았다. 연관관계의 파악도 쉬웠고, 데이터(자료)들도 많지 않았기 때문이다. 하지만 점점 program의 규모가 커지고 web이 활성화 되면서 규모가 매우 커지게 되었다. 이제는 사용자가 프로그램을 깔지 않고 한 곳에 접근해서 사용을 하게 되었다.->동시에 수 천명이 프로그램을 사용하게 되어 규모가 매우 커질 수 밖어 없었다.
ex) 은행의 인터넷 뱅킹
그렇게 되면서 Data 와 동작간의 관계가 어려워지기 시작했다. 동작 1, 2 둘 다 한 Data 를 사용하게 되면 Data가 얽히기도하고 보안도 취약해졌다. 또한 하나가 고장나면 찾기도 힘들고, 새로운 기능을 집어넣기도 힘들어졌다. 연관되어있는 것이 너무 커져서 더 이상 하나만 고쳐서는 바뀌지 않게 되었다. -> 유지보수가 어렵다.

 객체지향프로그래밍

- '어떻게 만들까'에 focus 를 두고 만드는 방식이다. 절차에 중점을 두는 것이 아니다. 프로그램을 2년 만들고(개발) 계속 사용하기(유지보수) 위해 관리해야 한다! -> 개발보다 유지보수가 더 오래해야 할 일이다.

- 유지보수가 어려워진 이유? Data 나 동작이 너무 많아져서이다.
 -> 많은 것을 줄이자! 작은 단위로 나누자.
 -> 이왕 나누는 것 관계 있는 애들끼리 나누자.

ex)
1번 그룹의 Data, 동작은 '직원'과 관련된 일을 하더라
2번 그룹의 Data, 동작은 '제품'과 관련된 일을 하더라
3번 그룹의 Data, 동작은 '고객'과 관련된 일을 하더라

각각을 뭉쳐 모듈화 하자! -> 관리하기가 편해진다
 - 각자를 단독적인 program 개념으로 봐도 된다.

-> 이렇게 나눈 후에 순서(절차)를 생각하자. 
 ex)  번째로 2번 그룹(제품), 두 째로 1번 그룹(직원), 세 번째로 3번 그룹(고객)의 순서로 일해라!

객체지향프로그래밍은 여기서 어떻게 모듈화를 시킬 것인가에 큰 focus를 둔다. -> 이렇게 모듈화를 시킨 것이 하나의 객체가 된다.(연관성 있는 Data, 동작을 모듈화시킨 것, Data나 method 가 들어있다)
- 분업의 개념과도 유사하다

-> 객체지향언어 (Object Oriented Programming Language)
    O.O.P

◎ O.O.P 의 장점 - 재사용성, 확장성, 유지보수성
- 재사용성 : 모듈(객체) 생성시에 최대한 독립적으로 만들어야 한다. 이러한 독립적인 객체가 다른 프로그램에서 필요하다면 다시 가져가 사용할 수  있다.
-> 절차지향에서도 재사용성이 없는 것이 아니지만 활용하기가 어렵다. 객체지향도 반드시 재사용성이 되는 것이 아니라 프로그래머가 재사용성이 있게 프로그램을 짜야만 한다.

- 확장성 : 새로운 것을 추가할 때 다른 객체를 고치는 것을 최소화하며 내용을 추가할 수 있다. 프로그래머가 잘 짜야만한다.

- 유지보수성 : 한 부분이 고장 났을 때, 고치는 것이 용이하다. 다른 객체에 여파가 가지 않는다. 수정이나 변경이 쉽다.

-> 이 세가지의 장점은 모두 프로그래머가 설계를 잘해야 이런 특징을 잘 사용할 수 있다.

◎ 객체
- State / Attribute / Property (상태/속성) - 객체의 Data
- Behavior / Operation (동작 / 기능) - 객체가 제공하는 동작 ,기능
                   -> method (예전 function)

ex) 컴퓨터의 Attribute - 크기( 15인치 ), 색상 ( 은색 ), cpu ( i5 ), 메모리 8GB 상태 (Data) -> 객체를 표현할 수 있는 것, 구성하는 것!
Operation - 입력을 받는다. 화면을 보여준다. 계산한다.

◎ 객체와 class

※ 우리 반이라는 프로그램을 구성하는 것. 학생, 강사, 컴퓨터, 교재 등 다양한 것으로 이루어져 있다. 이 때 각각은 학생, 강사 처럼 단 하나로 이루어 진것이 아니라 학생의 경우 24명의 사람이 있기 때문에 24개의 객체가 필요하다.
  학생 객체의 경우 1. 김세은 20살 서울거주 2. 노대영 25 서울 거주 등 각각 다른 값을 가지는 것이 24개가 존재할 것이다. 이렇게 값은 다르지만 같은 속성을 가지고 실질적인 내용을 갖고 있는 것이 객체이다.

- 이렇게 객체를 만들기 위해 학생은 이름, 나이, 거주지 라는 정보를 갖게 된다는 알려주는 틀이 바로 Class  이다 -> 객체의 설계도
-> 객체를 직접 만드는 것이 아닌 Class 를 만들고 program 에게 "객체를 만들어" 라고 명령

- public class -> class 를 만드는 키워드 (설계도를 하나 만들겠습니다)

※ 학생이라는 클래스를 통해서 다양한 객체를 만드는 것을 '인스턴스화'라고 하며 그렇게 만들어진 것을 객체 또는 instance 라고 부른다.

요약
- program 은 데이터를 조작하는 것이다.
- 객체지향언어 (O.O.O) 는 연관된 데이터와 동작들을 묶어서 (모듈화) 구현하는 방식이다
-> 장점으로는 재사용성, 확장성, 유지보수성이 있다.
- 객체는 연관성이 있는 데이터와 기능(동작)을 묶어놓은 Program 모듈이다. 프로그램 내에 프로그램을 실행시키기위해 존재(유/무형)하는 것이다
- 객체는 state/attribute/property -> 객체의 데이터 behavior/operation/method -> 객체가 제공하는 동작으로 이루어진다.
- class 는 객체의 설계도이다. 객체들이 가져야하는 attribute(instance 변수, 값을 넣을 변수가 됨) 와 method(instance 메소드) 를 설계한 것 이다.
- class -----instansiate(객체생성)-----> 객체 (instance)

◎ Java Class 구현 구문
[  ] 는 생략이 가능하다는 의미
 - [ 제한자 ]  class  class이름   -> class 선언부
  { ->제한자는 modifier 라고 부른다
        중괄호 안에 객체의 attribute/method 구현을 한다
        -> 중괄호 안이 class 의 구현부이다.
  }
※ 제한자 (modifier)
 - class 의 성격, 기능, 특징을 부여하는 것
ex) public class
      abstract class

◎ Class 이름
- 식별자의 규칙을 그대로 따른다.
- 관례는 파스칼 표기법이다 : 첫글자는 대문자 + carmel 표기법
   -> 이름만 보더라도 어떤것으로 쓰이는 것인지 알 수 있다.

※ class 이름과 자바 파일명
pulbic class 이름
{
  class이름.java
}
-> public 이 붙으면 반지시 class 이름으로 java 파일을 만들어야 한다.
- public 은 source file에 하나만 선언가능하고 반드시 파일명은 class 명과 같아야 한다.
- public 이 없으면 상관 없다.
- class 파일은 class 선언당 하나씩 생기며 file 명은 class 명이 된다.

public class A{   -> A.java
                  -> A.class(소스파일 이름 따라가는 것이 아니라 class  명을
}                                   따라가는 것이다)
class B{
}                -> B.class

 

반응형
Comments