클래스

OOP(Object Oriented Programming, 객체지향 프로그래밍)

프로그래밍 환경 발전 순서

  • 순차적 프로그래밍 ---> 구조적 프로그래밍 ---> 객체지향 프로그래밍

  • 수직 순차 처리 함수(Function) 클래스(Class: 메소드+멤버변수)

  • GOTO(유지보수 어려움) 함수 존재, main() 로직을 콤포넌트화해 재사용성 향상

  • 재사용성 없음 포인터를 이용해 고속처리 유지보수시 편리함 제공

  • line번호 존재 메모리 안정성이 떨어짐 메모리가 매우 안정적으로 관리됨

  • Reference 사용으로 속도가 느림

GW-BASIC, Fortran         C - Game, Network         WEB - JAVA, C#
Embeded, Graphic          Window Application - VC++

데이터의 구조 발전 순서

Primitive Data Type------------------> 구조체 -----------------------> 클래스  

(char, int, float...)         (기본 데이터 타입의 집합체)         (데이터 타입, 메소드, OOP)

C 언어

사용자 정의 추상 데이터 타입       사용자 정의 추상 데이터 타입

급여: 성명, 본봉, 세금, 실수령액   객체 지향 개념 추가

객체 지향의 개념

  • 재사용 가능하기 쉽게 제작됨

  • 한번 개발된 자바코드를 또 다른 프로젝트에 아주 적은 수정을 하면서 적용시킬수 있는 특징

  • Copy & Paste와는 전혀 다른 개념입니다.

  • 예) A 급여 프로그램 --> Module 재사용 --> B 급여 프로그램

  • 콤포넌트가 다른 콤포넌트와 독립적인 부품을 이루어 하나의 거대한 프로그램을 형성합니다.

  • 실생활에서의 객체 지향의 예(콤포넌트 지향 설계)

    • 컴퓨터 조립: onBoard(VGA, LAN, SOUND 합체) --> 교체가 어려움

    • 오디오 콤포넌트: Component- Speaker, Radio, CD, DVD, 카세트 분리

    • 윈도우 파일 열기 창

    • 자동차 조립: 타이어 교체

객체 지향 프로그램의 개발 순서

  • 객체 모델링(설계)

    • 작성하려는 클래스의 속성과 메소드를 미리 문서상으로 나열 정리한다.

    • 팀원간에 로직에 대한 이해를 빨리 할 수 있습니다.

    • 메소드 Stub(원형, 구조)을 생성합니다.

    • 클래스라는 형태로(멤버 변수의 선언, 메서드의 선언) 선언한다.

    • Rational Rose 2000, 2003, OMONDO Eclipse plugin

  • 클래스 정의

    • 멤버 변수 정의, 메소드 기능을 정의

  • 객체 생성과 사용

    • 정의된 클래스를 이용해서, 메모리상에 객체를 만들고, 객체를 이용한 프로그래밍을 한다.

    • 클래스 객체의 생성 - new를 통한 메모리 할당, 생성자를 호출

클래스 선언, 객체 생성, 멤버 변수

클래스의 선언

  • 클래스명은 첫자는 대문자로 시작하고 파일명은 클래스명과 대소문자도 일치 해야 합니다.

    • public class DosInput3 { ---> DosInput3.java 로 저장

  • 하나의 클래스는 하나의 파일로 생성됩니다. Test.java --> Test.class

  • java 파일 하나 안에는 여러개의 클래스를 넣어둘수 있는데 이런경우 컴파일을하면 자바 소스 파일은 하나이나 컴파일의 결과로 만들어지는 클래스는 2개이상이 됩니다.

  • 하나의 파일안에 클래스가 2개이상 있게되면 반드시 public 키워드로 진입(메인, 시작)클래스를 명시해야합니다. 이 클래스안에는 main()메소드가 있습니다.

  • 클래스가 2개이상 있는 경우의 파일명은 public이 명시된 클래스명으로 저장합니다.

  • 하나의 파일안에 public 클래스는 하나만 있을 수 있습니다.

PayCalc.java, 유지보수가 어려운 경우의 예

데이터 클래스의 분리

Pay2.java

PayCalc2.java

Last updated