• 검색 결과가 없습니다.

JAVA 프로그래밍 및 실습

N/A
N/A
Protected

Academic year: 2022

Share "JAVA 프로그래밍 및 실습 "

Copied!
28
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

JAVA 프로그래밍 및 실습

(2)

목차

1. JAVA 시작하기 ··· 6

JAVA 란? ··· 6

JAVA 설치 및 설정 ··· 6

Linux, UNIX, mac 에서의 환경 설정 ··· 9

JAVA 개발 도구 ··· 10

2. JAVA 문법 기초 ··· 14

객체지향 개념 ··· 14

첫 Java 프로그램 ··· 14

자바 기초 문법 ··· 19

3. 자바 객체와 클래스 (Java Objects and Classes) ··· 22

객체와 클래스와의 차이 ··· 22

자바 객체 ··· 22

자바 클래스 ··· 22

생성자 ··· 23

객체 생성하기 ··· 23

변수와 메소드 사용하기 ··· 24

자바 소스코드 사용 규칙 ··· 25

Java 패키지 ··· 26

4. 자료형 (Data Type) ··· 29

(3)

변수 수식자 (Non Access Modifier) ··· 38

5. 제어구조 ··· 42

연산자 ··· 42

루프 ··· 47

조건문 ··· 51

6. Wrapper Class ··· 55

Integer ··· 55

Character ··· 57

String ··· 59

7. 배열 ··· 64

배열 선언 ··· 64

배열 생성 ··· 64

배열 처리 ··· 64

Foreach 루프 ··· 65

매개변수로의 배열 ··· 66

리턴값으로의 배열 ··· 66

8. 자바 메소드 ··· 68

메소드 생성 ··· 68

메소드 호출 ··· 68

void 메소드 ··· 69

값 전달하기 ··· 69

메소드 오버로딩 ··· 70

키보드에서 매개변수 입력 받기 ··· 72

this 키워드 ··· 73

매개변수의 숫자 제한없이 전달하기 ··· 74

(4)

9. File 과 I/O ··· 77

스트림 ··· 77

파일 읽고 쓰기 ··· 79

파일 다루기 ··· 80

10. 예외처리 ··· 82

exception throw ··· 83

다수 exception catch ··· 83

Finally ··· 84

11. Inner Class ··· 86

Anonymous Inner class ··· 87

12. 상속 ··· 90

상속이란? ··· 90

super 키워드 ··· 91

Is-A 관계 ··· 92

instanceof 키워드 ··· 93

Has-A 관계 ··· 93

상속 종류 ··· 95

오버라이딩 ··· 95

오버라이딩 규칙 ··· 97

다형성 (polymorphism) ··· 98

13. 추상클래스 ··· 101

(5)

인터페이스란? ··· 107

인터페이스 선언과 구현 ··· 107

인터페이스 상속하기··· 108

인터페이스를 통한 다중상속 ··· 110

15. 패키지 ··· 112

패키지란? ··· 112

패키지 만들기 ··· 112

Import ··· 114

디렉토리 구조 ··· 115

classpath ··· 115

16. 자바 자료구조 ··· 117

List ··· 117

Enumeration ··· 118

Vector ··· 119

Stack ··· 120

Hashtable ··· 122

Map ··· 123

17. 지네릭 ··· 126

18. 멀티쓰레드 ··· 129

쓰레드란? ··· 129

Runnable 을 통한 쓰레드 생성하기 ··· 129

Thread class 를 상속하여 쓰레드 생성하기 ··· 131

(6)

1. JAVA 시작하기 JAVA 란?

자바의 역사

제임스 고슬링 (James Gosling) 은 1991 년 6 월 셋톱 박스에 사용하기 위해 Java 언어 프로젝트를 시작했습니다. Gosling 의 사무실 밖에 서있는 떡갈나무의 이름을 따서 처음에 는 ‘Oak’라고 불린 이 언어는 ‘Green’ 이라는 이름으로 바뀌었고 나중에 임의의 단어 목 록에서 Java 로 이름이 바뀌게 되었습니다.

Sun 은 1995 년에 최초의 공개 구현을 Java 1.0 으로 출시했습니다. Sun 은 무료 런타임을 제공하는 WORA(Write Once, Run Anywhere)를 약속했습니다.

2006 년 11 월 13 일 Sun 은 GNU General Public License (GPL)의 조건에 따라 많은 Java 를 무료 및 오픈 소스 소프트웨어로 출시했습니다.

2007 년 5 월 8 일, Sun 은 저작권을 보유하지 않은 코드의 작은 부분을 제외하고는 자바의 핵심 코드를 모두 무료로 오픈 소스로 만드는 과정을 마쳤습니다.

필요한 도구

이 책의 예제를 수행하려면 다음과 같은 소프트웨어가 필요합니다.

Linux 7.1 이상 또는 Windows 7/8/10

자바 JDK 8

이클립스

JAVA 설치 및 설정

이 단계에서는 자바를 다운로드하고 설정하는 방법을 설명하겠습니다.

1) Oracle 에서 제공하는 Java SE 를 다운받아야 합니다. 아래 링크에서 운영 체제에 따라 다운로드 하십시오.

(7)

‘Accept License Agreement’ 클릭 후 다운로드하여 컴퓨터에 Java 를 설치하십시오. 컴 퓨터에 Java 를 설치하면 올바른 설치 디렉토리를 가리키도록 환경 변수를 설정해야 합니 다.

2) 자바를 실행시킬 수 있도록 하기 위해서는 시스템에 자바 실행 프로그램에 대한 환경설 정을 해주어야 합니다. [Win] + [Pause Break] 를 누르거나 [제어판] > [시스템]으로 시스템 창을 열어 줍니다. 그리고 [고급 시스템 설정]을 들어갑니다.

(8)

3) [고급]탭에서 [환경 변수]를 클릭합니다.

4) [시스템 변수]에서 [Path]를 선택해주시고 [편집]을 클릭합니다.

(9)

5) [새로 만들기]를 누른 후 자바 경로를 등록합니다.

6) 설치가 잘 되었나 확인합니다. [Win] + [R] + CMD 입력 또는 [Win] 키를 눌러 CMD 를 입력 후 엔터를 눌러 Command 창을 열어 줍니다. 그 후 java -version 이라고 입력합니 다.

위와 같이 뜨면 설치가 잘 된 것입니다.

Linux, UNIX, mac 에서의 환경 설정

환경 변수 PATH 를 Java 가 설치된 위치를 가리키도록 설정합니다. 환경 설정 방법은 각자 의 시스템의 환경 설정 방법을 참고하세요.

(10)

JAVA 개발 도구

Java 프로그램을 작성하려면 텍스트 편집기가 필요합니다. 다음과 같은 편집기를 사용할 수 있습니다.

메모장 – Windows 컴퓨터에서는 메모장과 같은 간단한 텍스트 편집기를 사용할 수 있 습니다.

Netbeans – 오픈 소스이며 무료인 Java IDE 입니다.

이클립스 – 이클립스 오픈소스 커뮤니티에서 개발한 Java IDE 입니다.

이 책에서는 이클립스를 이용하여 Java 프로그램을 작성합니다.

다음은 이클립스 다운로드 과정입니다.

1) 아래의 링크를 이용하여 이클립스 페이지에 들어간 후 오른쪽 상단에 있는 Download 버튼을 클릭합니다.

https://www.eclipse.org/

아래와 같은 화면이 나오면 [Download Packages] 를 클릭합니다.

(11)

2) 사용하는 운영체제에 맞게 다운로드를 합니다.

[Download] 를 클릭하여 파일을 받습니다

(12)

3) 파일을 다운로드 받은 후 압축을 풀어줍니다.

Eclipse 를 실행하여 작업공간을 설정해줍니다. 작업 공간은 자바 프로그램의 소스코드, 자바 프로젝트 생성시 자동으로 생성되는 파일들, 컴파일을 통해 실행 파일을 만들게 되면 생성되는 파일들이 저장되는 위치를 의미합니다. 디폴트로 지정되는 위치를 작업공간으로 설정해도 되고, 프로그래밍 작업 공간을 임의로 설정하여 사용하고 있다면 그 위치를 작업공간으로 설정할 수도 있습니다.

(13)
(14)

2. JAVA 문법 기초

객체지향 개념

자바는 서로의 메소드를 호출함으로써 의사소통을 하는 객체의 집합으로 정의할 수 있습니 다.

Object

객체에는 상태와 동작이 있습니다. 예: 고양이에는 색, 이름, 품종 같은 상태, 꼬리 흔들기, 먹기 등의 행동이 있습니다.

Class

클래스는 해당 유형의 객체가 지원하는 동작이나 상태를 설명하는 템플릿 또는 설계도로 정의할 수 있습니다

Methods

메소드는 기본적으로 객체가 수행하는 행동을 의미합니다. 클래스는 많은 메소드를 포함할 수 있습니다. 메소드 안에서 논리가 쓰여 지고 데이터가 조작되며 모든 액션이 실행됩니다

첫 Java 프로그램

Java 프로그램을 실행하기에 앞서 이클립스에서 자바코드를 컴파일하고 테스트하는 법을 설명 드리겠습니다.

1) 이클립스를 실행한 뒤 왼쪽 상단의 [File] > [New] > [Project] 를 클릭합니다.

(15)

프로젝트 이름 test 를 설정 후 [Finish]를 눌러줍니다.

(16)

3) 생성된 프로젝트에 클래스를 만들어 줍니다. 생성된 test 프로젝트의 src 위에서 마우 스 오른쪽을 클릭 후 [New] > [Class]를 클릭합니다.

(17)

Class 이름 Myjava 를 입력 후 public static void main(String[] args)을 체크하여 메 인소스가 자동으로 생성되게 합니다.

4) 생성된 프로젝트의 소스코드를 아래와 같이 수정한 후, 간단한 Java 코드를 실행합니 다.

(18)

package test;

public class Myjava {

public static void main(String []args) {

System.out.println("첫 번째 자바프로그램입니다.");

} }

5) 코딩한 후 상단의 [Run] > [Run As] > [1 Java Application]을 클릭합니다.

6) 하단에 아래와 같은 결과가 출력되는 것을 확인합니다.

(19)

자바 기초 문법

자바 이름(식별자)짓기

모든 Java 구성 요소에는 이름이 필요합니다. 클래스, 변수 및 메소드에 사용되는 이름을 식 별자라고 합니다. 자바에서는 식별자에 대해 기억해야 할 점이 몇 가지 있는 데 다음과 같 습니다.

모든 식별자는 문자 (A ~ Z 또는 a ~ z), 통화 문자 ($) 또는 밑줄 (_)로 시작해야합니다.

첫 번째 문자 다음에는 식별자가 임의의 문자 조합을 가질 수 있습니다.

키워드는 식별자로 사용할 수 없습니다.

가장 중요한 점은 식별자가 대소 문자를 구분한다는 것입니다.

올바른 식별자의 예 : age, $ salary, _value, __1_value.

올바르지 않은 식별자의 예 : 123abc, -salary.

이름 짓기 규칙

대소 문자 구분 - Java 는 대소 문자를 구별합니다. Hello 및 hello 는 자바에서 다른 의미를 갖습니다.

클래스 이름 - 모든 클래스 이름의 첫 글자는 대문자여야 합니다. 여러 단어를 사용하여 클래스 이름을 만들면 각 단어의 첫 글자는 대문자여야 합니다.

◼ 예 : class MyJava

메소드 이름 - 모든 메소드 이름은 소문자로 시작해야합니다. 여러 단어를 사용하여 메서드의 이름을 만들면 각 안 단어의 첫 번째 문자는 대문자여야 합니다.

◼ 예 : public void myMethodName ( )

프로그램 파일 이름 - 프로그램 파일의 이름 은 클래스 이름과 정확하게 일치해야 합니다.

그러나 파일에 공용 클래스가 없는 경우 파일 이름이 클래스 이름과 다를 수 있습니다. 또한 파일에 공용 클래스가 있어야하는 것은 아닙니다.

예: 'MyFirstJavaProgram'이 클래스 이름이라고 가정합니다. 그러면

(20)

• public static void main (String args []) - Java 프로그램 처리는 모든 Java 프로그램의 필수 부분 인 main ( ) 메소드에서 시작됩니다.

자바 변수

클래스는 다음 변수 유형 중 하나를 포함할 수 있습니다.

로컬 변수 – 메소드, 블럭의 내부에서 정의된 변수를 로컬 변수라고 합니다.

메소드 내에서 변수가 선언되고 초기화되며 메소드가 완료되어 종료되면 변수가 삭제됩니다.

인스턴스 변수 - 인스턴스 변수는 클래스 내에 있지만 메소드 외부에 있는 변수입니다. 이 변수는 클래스가 인스턴스화 될 때 초기화됩니다. 인스턴스 변수는 특정 클래스의 모든 메소드, 생성자 또는 블록 내부에서 액세스 할 수 있습니다.

클래스 변수 - 클래스 변수는 같은 클래스의 인스턴스들끼리 내용을 공유하는 변수로서 전역 변수와 같은 역할을 합니다.

자바 키워드

아래의 표는 Java 에서의 예약어 리스트입니다. 이런 예약어들은 상수나 변수, 다른 어떤 식별자 이름으로도 사용할 수 없습니다.

abstract assert boolean break

byte case catch char

class const continue default

do double else enum

extends final finally float

for goto if implements

(21)

자바 코멘트

Java 는 C 및 C++와 매우 유사한 단일 행 및 다중 행 주석을 지원합니다. 모든 주석 내에서 사용한 모든 문자는 Java 컴파일러에서 무시됩니다. 코멘트로는 //나 /* .. */ 를 사용합니 다.

예제

package test;

public class Myjava {

public static void main(String []args) { // 한줄 주석입니다.

/* C 및 C++와 매우 유사합니다 다중행 주석지원합니다*/

System.out.println("첫 번째 자바프로그램입니다.");

} }

결과

첫 번째 자바프로그램입니다.

(22)

3. 자바 객체와 클래스 (Java Objects and Classes)

객체와 클래스와의 차이

Object

객체에는 상태와 동작이 있습니다. 예: 고양이에는 색, 이름, 품종 같은 상태, 꼬리 흔들기, 먹기 등의 행동이 있습니다. 객체는 클래스의 인스턴스입니다.

Class

클래스는 해당 유형의 객체가 지원하는 동작이나 상태를 설명하는 템플릿 또는 설계도로 정의할 수 있습니다

간단히 말해 클래스는 ‘설계도’, 객체는 ‘설계도로 구현한 모든 대상’을 의미합니다.

자바 객체

객체가 무엇인지 자세히 알아보겠습니다. 현실 세계를 고려해보면, 우리는 사람들이나, 차, 개들과 같은 무수히 많은 객체를 찾을 수 있습니다. 이 모든 객체들은 상태와 동작을 가지 고 있습니다.

소프트웨어 객체와 현실 세계의 객체를 비교해보자면 둘은 큰 차이가 없습니다.

소프트웨어 객체 또한 상태와 동작을 가지고 있습니다. 소프트웨어 객체의 상태는 필드에 저장되며 동작은 메소드를 통해 표시됩니다.

따라서 소프트웨어 개발에서 메소드는 객체의 내부에서 작동하며 객체 간 통신은 메소드를 통해 수행됩니다.

자바 클래스

클래스는 개별 객체를 만드는 설계도입니다.

다음은 클래스 예제입니다.

(23)

}

void sleeping() { }

}

클래스는 다양한 메소드의 값에 액세스 할 수 있는 메소드와 클래스 변수들을 여러 개 가 질 수 있습니다. 위에서 mew(), hungry(), sleeping()은 메소드이며 breed, age, color 는 클래스 변수입니다.

클래스는 로컬 변수, 인스턴스 변수, 클래스 변수들을 포함할 수 있습니다. 위의 예에서 breed, age, color 는 인스턴스 변수, animalType 은 클래스 변수입니다. 로컬변수는 메 소드 내부에서 필요에 따라 정의된 변수를 의미합니다.

생성자

클래스의 가장 중요한 것 중 하나는 생성자입니다. 모든 클래스에는 생성자가 있으며 클래 스의 생성자를 명시적으로 작성하지 않으면 Java 컴파일러는 해당 클래스의 모든 변수들의 값들을 기본 값으로 설정합니다. 특정 값을 변수의 초기값으로 하고 싶으면 생성자를 사용 해야 합니다.

생성자의 주된 규칙은 클래스와 동일한 이름을 가져야 한다는 것입니다. 클래스는 둘 이상 의 생성자를 가질 수 있습니다.

public class Cat { public Cat() { }

public Cat(String name) {

// 이 생성자에는 name 이라는 매개 변수가 있습니다.

} }

객체 생성하기

클래스에서 객체를 만들 때는 세 단계가 있습니다.

선언 – 객체 유형이 있는 변수 이름을 사용하는 변수 선언입니다.

인스턴스화 – ‘new’키워드는 객체를 만드는 데 사용됩니다.

(24)

기화합니다.

다음은 객체 생성의 예제입니다.

public class Cat {

public Cat(String name) {

// 이 생성자에는 name 이라는 매개 변수가 있습니다.

System.out.println("이름:" + name );

}

public static void main(String []args) { // 다음 구문은 mycat 이라는 객체를 만듭니다.

Cat mycat = new Cat( "tom" );

} }

변수와 메소드 사용하기

이 예제는 클래스의 인스턴스 변수 및 메소드에 액세스하는 방법을 설명합니다. 특정 클래 스의 변수나 또는 메소드를 사용하기 위해서는 클래스 또는 인스턴스의 이름과 . 그리고 변수이름/메소드 이름을 붙여 사용합니다.

public class Cat { int catAge;

String catName;

public Cat(String name) { catName = name;

System.out.println("고양이 이름 :" + name);

}

public void setAge(int age) { catAge = age;

(25)

Cat myCat = new Cat("tom");

/* 클래스의 메소드를 호출하여 고양이의 나이 설정 */

myCat.setAge(2);

/* 다른 클래스 메소드를 호출하여 강아지의 나이를 얻습니다 */

myCat.getAge();

/* 다음과 같이 인스턴스 변수에 액세스 할 수 있습니다. */

System.out.println("변수 값 :" + myCat.getAge());

} }

결과

고양이 이름 :tom 고양이의 나이 :2 변수 값 :2

자바 소스코드 사용 규칙

이 규칙은 소스파일에서 클래스, import 및 패키지 문을 선언할 때 필수적입니다.

소스 파일 당 하나의 공용(public) 클래스만 있을 수 있습니다.

소스 파일에는 여러 개의 비공용(non-public) 클래스가 있을 수 있습니다.

public 클래스 이름은 소스 파일의 이름이어야 하며 소스파일 끝에는 .java 가 추가되 어야 합니다. 예를 들어 클래스 이름이 public class Staff{} 이면 소스 파일은 Staff.java 이어야 합니다.

패키지 내에서 클래스가 정의되면 package 문은 소스 파일의 첫번째 문장 이어야 합니 다.

Import 문이 있으면 패키지 문과 클래스 선언 사이에 작성해야 합니다. 패키지 문이 없으면 import 문은 소스 파일의 첫 번째 행이어야 합니다.

Import 및 패키지 명령문은 소스 파일에 있는 모든 클래스를 의미합니다. 다른 Import 또는 패키지 문을 소스 파일의 다른 클래스에 선언할 수 없습니다.

(26)

Java 패키지

Java 패키지는 간단히 말해 클래스와 인터페이스를 분류하는 방법입니다. Java 로 응용 프 로그램을 개발할 때 수백 가지의 클래스와 인터페이스가 작성되므로 이러한 클래스를 범주 화 하는 것이 필수적이고 훨씬 쉽게 작업을 수행할 수 있습니다.

예제) Staff 와 StaffTest 라는 두 개의 클래스를 만들 것입니다. 우선 네 개의 인스턴스 변수가 있는 Staff 라는 공용 클래스를 만듭니다. 클래스에는 매개변수를 취하는 생성자가 하나 있습니다.

package test;

public class Staff { String name;

int age;

String designation;

double salary;

// Staff 클래스의 생성자입니다.

public Staff(String name) { this.name = name;

}

// Staff 의 나이를 변수로 지정합니다.

public void stfAge(int stfAge) { age = stfAge;

}

/* 직책을 변수로 지정합니다. */

public void stfDesignation(String stfDesig) { designation = stfDesig;

}

/* 급여를 변수로 지정합니다. */

public void stfSalary(double stfSalary) { salary = stfSalary;

}

/* Staff 의 세부정보를 출력합니다. */

(27)

Java 는 main 메소드에서 프로세스가 시작됩니다. 따라서 이 Staff 클래스를 실행하려면 main 메소드가 있어야 하며 객체가 만들어 져야합니다. 우리는 이러한 작업을 위해 StaffTest 클래스를 생성할 것입니다. StaffTest 클래스는 Staff 클래스의 두 인스턴스 를 만들고 각 객체에 대한 메소드를 호출하여 각 변수에 값을 할당합니다.

public class StaffTest {

public static void main(String args[]) { /* 생성자를 이용하여 두 개의 객체 만들기 */

Staff stfOne = new Staff("김민준");

Staff stfTwo = new Staff("이수빈");

// 생성된 각 객체에 대한 메소드 호출 stfOne.stfAge(26);

stfOne.stfDesignation("팀장");

stfOne.stfSalary(1000);

stfOne.printStaff();

stfTwo.stfAge(21);

stfTwo.stfDesignation("대리");

stfTwo.stfSalary(500);

stfTwo.printStaff();

} }

이제 두 클래스를 모두 컴파일 한 다음 StaffTest 를 실행합니다.

결과

이름:김민준 나이:26 직책:팀장 급여:1000.0 이름:이수빈 나이:21 직책:대리 급여:500.0

실습) Circle 클래스를 작성하여라. Circle 클래스는 면적, 지름, 둘레 길이를 계산할 수 있는 메소드가 포함되어야 하며 이를 위해서 반지름을 인스턴스 변수로 가진다. 또한 Circle 클래스의 생성자, 반지름의 값을 변경하거고 리턴할 수 있는 메소드들을 포함시켜

(28)

들을 화면에 보여줄 수 있는 CircleManager.java 를 생성하여 해당 내용을 처리한다.

참조

관련 문서

• Qualities yielded : Centralization of computation and data at the server, with the information made available to remote clients. A single powerful server can

Network Computers Network computer 제조업체 독립된 Java 소프트웨어 Network computer 판매 VS Java 응용기반 Network Network Computers Network computer

Network Computers Network computer 제조업체 (Oracle, IBM, Sun). 독립된

 시스템 소프트웨어는 컴퓨터 하드웨어의 작동을 통제하고 응용 프로그램의 실행을 지원한다.  운영체제는 컴퓨터 하드웨어를 통제하고

실용 연구자: 실생활에 적용가능한 소프트웨어 개발.B. 소프트웨어 수요는

– 협업활동을 지원하기 위한 기능과 서비스로 문서작성, 논평, 정보공유, 화상회의, 일정관리, 이메일 및 네트워크 기반의 협업 지원 소프트웨어

z 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체(소프트웨어 생산 결과물 일체).

정보 시스템 사용자로부터 정보를 입수하고, 이를 가공하여 저장하고 적 절한 양식으로 사용자에게 출력하는 작업이 주인 시스템이 다.. 각종 공공 기관, 금융기관, 회사에서