본문 바로가기
Develop/Java

JAVA 객체지향 프로그래밍

by J0DEV 2021. 8. 6.
반응형

 

ex2.zip
다운로드

(예제 파일)

 

프로그래밍을 접해본 사람이라면 객체지향이라는 단어를 들어본적이 있을 것이다.


객체지향의 개념

 

1. 구조적 프로그래밍 기법

데이터와 함수를 이용하여 순차적으로 구현하며 프로그램의 유지보수가 어렵다.

C언어의 경우와 같이 함수와 제어구조를 이용하여 데이터를 순차적으로 처리하는데 적합한 방식이다.

데이터와 함수가 분리되어 있으며 기존 기능에 새로운 기능을 추가해야 할 경우, 프로그램 전체에 대하여 수정이 필요하다.

 

2. 객체지향 프로그래밍 기법

현실세계의 물체 또는 개념을 속성과 기능을 가진 객체로 모델링하여 프로그래밍에 사용하는 것을 말한다.

변수와 기능을 객체라는 개념으로 묶어 놓는다.

새로운 객체를 추가하기 쉬우며 프로그램 유지보수가 쉽다.

새로운 객체가 추가되더라도 기존 객체에 무관하며 대규모 프로젝트 진행에 적합하다.

 

 

 

객체지향 프로그래밍 과정
객체 모댈링 > 클래스 정의 > 메모리에 인스턴스 생성

 

3. 객체 모델링

객체는 속성과 기능으로 구분하여 구현가능한 부분만을 정의한다.

자바문법에 맞게 객체를 구현한 것을 클래스라고 하는데 객체하나가 클래스로 만들어지는 것을 말한다.

클래스에서 보통 속성은 멤버변수로 정의되고 기능은 메서드로 정의되며 클래스가 생성될때 기본적으로 해야하는 일을 생성자로 정의된다.

객체는 현실세계의 물체 또는 개념이고 클래스는 프로그래밍에 사용하기 위해 객체를 추상화 시킨 것이다. 그러므로 객체와 클래스는 같다고 볼 수 있다.

 

클래스 생성의 예

 

4. 인스턴스의 생성

클래스를 사용하기 위해서는 메모리에 생성되어야 한다.

메모리에 인스턴스를 생성시키기 위해 new 연산자를 사용하며 생성된 인스턴스는 객체변수의 형태로 표현된다.

객체변수의 멤버변수나 멤버메서드를 나타내기 위해 점(.)을 사용한다.


여기서 인스턴스는 btn이다.

JavaButton btn = new JavaButton();


main() 메소드

1. main() 메소드

자바 가상머신이 호출하는 최초의 메서드이다.

자바프로그램이 실행되기 위해서는 자바가상머신이 자바프로그램을 호출하도록 해야하는데데, 자바가상머신은 main() 메서드를 가장 먼저 호출하므로 자바 프로그램이 실행되기 위해선 반드시 main() 메서드를 갖고 있어야한다.

 

public static void main(String[] args)의 의미

public

  • 다른 클래스에서 이 클래스를 제한없이 사용할 수 있다.

static

  • 정적 메소드 선언에 사용되는 선언자로서 클래스의 인스턴스 생성없이도 메소드를 사용할 수 있게 한다.

void

  • 리턴 타입이 없다.

main

  • main이라는 메서드의 이름

String[] args

  • 프로그램 실행 시 매개변수를 보내서 실행할 수 있다는 것을 뜻한다.
  • 1개를 사용할수도 있고 여러개를 사용할 수도 있기 때문에 배열을 사용한다.

(public static void main(String[] args){} == static public void main(String args[]){})

 

2. main() 메소드 인자

인자란?

메소드를 호출할 때 넘어오는 변수들의 목록이다.

 

main() 메서드의 인자는 String 클래스의 배열이다.

args는 자바프로그램 호출시에 인자로 넘어온 문자열들의 배열이다.

Ex) java JAVAButtonExam aaa bbb ccc
예제와 같이 호출했을 경우 배열요소의 개수는 3이며, 각 배열 요소에는
args[0] ==> "aaa"
args[1] ==> "bbb"
args[2] ==> "ccc"
(인자)            (값)
와 같은 값으로 배정된다.

 

 

 

import문과 패키지

1. import문

클래스변수를 사용하기 위해서는 해당 클래스가 어디 있는지 알고 있어야 한다.

해당 클래스 파일이 동일 디렉토리에 있을 경우 별도로 지정하지 않아도 된다. 현재 디렉토리에 존재하지 않는 클래스를 선언해야 할 경우 import 문을 사용한다.

import 패키지명.클래스명;
import 패키지명.*;
Ex)
import java.lang.String;
import java.lang.*;
(lang = 자바의 표준 패키지)

import java.util.*; 

java.util 패키지에 포함된 모든 클래스들을 사용하도록 포함시킨다.

그리고 Math 클래스의 정적 메소드인 random()메소드를 이용하여 난수를 rand라는 변수에 저장하여

출력하는 프로그램이다.

(난수는 0과1사이의의 실수 중에서 무작위로 발생한다.)

 

2. 패키지

비슷한 기능의 클래스들을 하나로 묶어 관리하는 기능이다.

package 상위패키지명.패키지명;
package 패키지명;

위의 예제 프로그램을 보면

package ex2;가 있는데

현제 디렉토리에서 ex2라는 디렉토리 생성 후, 아래의 클래스들을 저장한다는 의미이다.

만약 package com.ex2; 라고 되어있으면

현제디렉토리 안에 com디렉토리를 생성하고 그 안애 ex2디렉토리를 생성 후, 클래스들을 저장한다는 의미이다.

 

 

 

 

 

 

반응형

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

JAVA this, super 수정자  (0) 2021.08.08
JAVA 상속과 접근제어  (0) 2021.08.08
JAVA 메소드, 생성자  (0) 2021.08.08
JAVA 데이터형, 연산자, 제어문, 배열  (0) 2021.08.06
JAVA 개발환경 구축  (0) 2021.08.06