nme.kr

목차

수업 과제 정리

Hello World 출력

public class HelloWorld{
     public static void main(String[] args) {
          System.out.println("Hello world!");
     }
}

결과 :

Hello world!

핵심정리

객체 라이프 사이클
1. 클래스 정의
2. 객체 참조변수 선언
3. 객체 생성
4. 생성자 호출
5. 주소 할당
6. 객체 사용
7. 객체 소멸
코딩 품질향상 단계별 정리
1단계 실행클래스 main
2단계 헬퍼클래스
3단계 상속(Inheritance) extends
4단계 추상화 Abstract
5단계 Interface
6단계 Implements
7단계 VO Value Object
8단계 예외처리(Exception) try ~catch
9단계 User-defined
10단계 Multi Thread
품질 1단계 (실행클래스)
class TestStudent {
	public static void main(String[] args) {
		System.out.println("홍길동");
	}
}
품질 2단계 (헬퍼클래스)
class Student {
	void doService() {
		System.out.println("홍길동");
	}
}
class TestStudent {
	public static void main(String[] args) {
		Student st = new Student();
		st.doService();
	}
}
품질 3단계
class Parent {	// Super
	void doService() {
		System.out.println("홍길동");
	}
}
class Student extends Parent {
}
class TestStudent {
	public static void main(String[] args) {
		Student st = new Student();
		st.doService();
	}
}
품질 4단계
abstract class Parent {	// Super
	abstract void doService();
}
class Student extends Parent {
	void doService() {
		System.out.println("홍길동");
	}
}
class TestStudent {
	public static void main(String[] args) {
		Student st = new Student();
		st.doService();
	}
}
품질 5단계
interface Parent {		// Super
	void doService();
}
class Student implements Parent {
	public void doService() {
		System.out.println("홍길동");
	}
}
class TestStudent {
	public static void main(String[] args) {
		Student st = new Student();
		st.doService();
	}
}
품질 6단계
interface IStudent {
	void doService();
}
class StudentImpl Implements IStudent {
	void doService() {
		System.out.println(“홍길동”);
	}
}
class Student {			// Client
	IStudent is;
	Student() {
		is = new StudentImpl();
	}
	void doService() {
		is.doService();
	}
}
class TestStudent {
	public static void main(String[] args) {
		Student s = new Student();
		s.doService();
	}
}
품질 7단계
interface IStudent {
	void doService(StudentVO vo);
}
class StudentImpl implements IStudent {
	public void doService(StudentVO vo) {
		System.out.println(
			vo.getName()+“의 나이는”
			+vo.getAge()+“세입니다.”);
	}
}
class Student {		// 클라이언트
	private IStudent is;
	Student(){
		is = new StudentImpl();
	}
	void doService(StudentVO vo) {
		is.doService(vo);
	}
}
class StudentVO {
	private String name;
	private int age;
	StudentVO(String name, int age) {
		this.name = name;
		this.age = age
	}
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
	void setAge(int age) {
		this.age = age
	}
	int getAge() {
		return age;
	}
}
class TestStudent {	// 실행클래스
	public static void main(String[] args) {
		StudentVO vo = new StudentVO(“홍길동”, 20);
		Student st = new Student();
		st.doService(vo);
	}
}
품질 8단계
interface IStudent {
	void doService(StudentVO vo);
}
class StudentImpl implements IStudent {
	public void doService(StudentVO vo) throws Exception {
		System.out.println(
			vo.getName()+“의 나이는”
			+vo.getAge()+“세입니다.”);
	}
}
class Student {		// 클라이언트
	private IStudent is;
	Student(){
		is = new StudentImpl();
	}
	void doService(StudentVO vo) {
		try {
			is.doService(vo);
		} catch (Exception c){
			System.out.println(c.getMessage());
		}
	}
}
class StudentVO {
	private String name;
	private int age;
	StudentVO(String name, int age) {
		this.name = name;
		this.age = age
	}
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
	void setAge(int age) {
		this.age = age
	}
	int getAge() {
		return age;
	}
}
class TestStudent {	// 실행클래스
	public static void main(String[] args) {
		StudentVO vo;
		vo = new StudentVO(“홍길동”, 20);
		Student st = new Student();
		st.doService(vo);
	}
}
품질 9단계
class UserDefinedException extends Exception {
	UserDefinedException(String msg){				
		super(msg);
	}
}
interface IStudent {
	void doService(StudentVO vo) throws Exception, UserDefinedException;
}
class StudentImpl implements IStudent {
	public void doService(StudentVO vo) throws Exception, UserDefinedException {
		System.out.println(
			vo.getName()+“의 나이는”
			+vo.getAge()+“세입니다.”);
		throw new UserDefinedException(“User-Defined Exception!”);
	}
}
class Student {		// 클라이언트
	private IStudent is;
	Student(){
		is = new StudentImpl();
	}
	void doService(StudentVO vo) {
		try {
			is.doService(vo);
		} catch (UserDefinedException c){
			System.out.println(c.getMessage());
		} catch (Exception c){
			System.out.println(c.getMessage());
		}
	}
}
class StudentVO {
	private String name;
	private int age;
	StudentVO(String name, int age) {
		this.name = name;
		this.age = age
	}
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
	void setAge(int age) {
		this.age = age
	}
	int getAge() {
		return age;
	}
}
class TestStudent {	// 실행클래스
	public static void main(String[] args) {
		StudentVO vo;
		vo = new StudentVO(“홍길동”, 20);
		Student st = new Student();
		st.doService(vo);
	}
}
class IStudent() {
	void doService(StduentVO vo);
}
class StudentImple implements IStudent {
	public void doService(StudentVO vo) {
		StudentThread st;
		st = new StudentThread();
		st.start();
	}
}
class StudentThread extends Thread {
	StudentVO vo;
	StudentThread(StudentVO vo) {
		this.vo = vo;
	}
	void run() {
		try{
		System.out.println(vo.getName());
		} catch(Exception e){
		}
	}
}
class Student {
	IStudent is;
	Student(){
		is = new StudentImpl();
	}
	void doService(StudentVO vo) {
		is.doService(vo);
	}
}
class StudentVO {
	String name;
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
}
class TestStudent {
	public static void main(String[] args) {
		StudentVO vo = new StudentVO();
		Student st = new Student();
		vo.setName(“홍길동”);
		st.doService(vo);
	}
}
품질 10단계
class IStudent() {
	void doService(StduentVO vo);
}
class StudentImple implements IStudent {
	public void doService(StudentVO vo) {
		StudentThread st;
		st = new StudentThread();
		st.start();
		try{
			st.join();
		} catch(InterruptedException e){
		}
	}
}
class StudentThread extends Thread {
	StudentVO vo;
	StudentThread(StudentVO vo) {
		this.vo = vo;
	}
	void run() {
		try{
		System.out.println(vo.getName());
		} catch(Exception e){
		}
	}
}
class Student {
	IStudent is;
	Student(){
		is = new StudentImpl();
	}
	void doService(StudentVO vo) {
		is.doService(vo);
	}
}
class StudentVO {
	String name;
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
}
class TestStudent {
	public static void main(String[] args) {
		StudentVO vo = new StudentVO();
		Student st = new Student();
		vo.setName(“홍길동”);
		st.doService(vo);
	}
}

주요개념

for loop

상속 - 멤버필드 : 멤버메소드

is a vs has a

오버로딩 vs 오버라이딩

문자열 출력하기 (FooBarBaz 01)

System.out.println(“ ”)라인 출력하기

“\n” 줄 칸 띄우기

System.out.println(" ");

결과 :

for~ if 문, 반복문 활용 (FooBarBaz 02)

  • System.out.printf(“제어문자”, Data);
  • %c(문자) %d(정수) %f(실수) %s(문자열)
System.out.printf("%4s", "문자열");  
//문자의 자릿수를 정해줌.

for 구문
for(변수 선언; 변수의 사용범위; 변수에 대한 명령){}


for(int i=0; i<10; i++){

if 구문을 통한 반복되는 문자열 추가

if (i % 3 == 0) {
System.out.printf("%4s", "foo")

for~ if 반복문

결과 :

if ~else문 > 삼항연산자 (학점계산기 01)

학점 계산기를 만들기 위한 값의 구조

90> A 이고 98>“+” , 94<“-“
80~89 = B 이고 88>”+” , 84<“-”
나머지는 C (default)

if A(if +) 그 밖은(-) else / 범위의 밖에서부터 생각한다.

grade(문자 변수)+(붙여주는)=“+” , “_”

int score = 82; //점수 선언
String grade =" "; // 학점 결과 값 출력을 위한 정의(문자열)

         if (score >= 90) {  // score가 90점 보다 같거나 크면 A학점(grade) / 1번 if
            grade = "A";
            if ( score >= 98) {   // 90점 이상 중에서도 98점 이상은 A+
               grade += "+"; // grade = grade + "+";와 같다.
               
               }else if
               grade +="-";
               }

if ~else

삼항연산자

grade =

(score >= 90) ? A + ( (score >= 98) ? “+” : (score < 94) ? “-” ) : “ ” (score >= 80) ? B + ( ? “+” : “-” ) : C

삼항연산자

결과 :

당신의 점수는 82점입니다.
당신의 학점은 B-입니다.

switch문 > if ~else문 (점수-상품 01)

 int score = (int)(Math.random()*10+1);
/*
Math.random()*10 -> 0~에서 9.9 사이의 실수를 만들어 냄
(int)를 붙여줘서 소수점을 잘라내고 정수로 변환
*/

int score = (int)(Math.random()*10+1); score에 1~10 랜덤 수를 대입
switch(score*100){ case 200 : 실행 break; case 300 : 실행 break; default; 실행 }

  switch(score*100){ // 일종의 분배기
   case 100 : 
            System.out.println("당신의 점수는 100이고, 상품은 자전거입니다.");
   break;

switch

if(score*100 == 100) {
	System.out.println("당신의 점수는 100이고, 상품은 자전거입니다.");
}//switch => if
	else if(score*100 == 200) {
		System.out.println("당신의 점수는 200이고, 상품은 TV입니다.");

if ~else if

결과 :

당신의 점수는 100이고, 상품은 자전거입니다.
당신의 점수는 200이고, 상품은 TV입니다.
당신의 점수는 300이고, 상품은 노트북입니다.
당신의 점수는 400이고, 상품은 자동차입니다.
죄송하지만 당신의 점수는 해당상품이 없습니다.

switch문 > 삼항연산자 (점수-상품 02)

switch

삼항연산자

결과 :

당신의 점수는 100이고, 상품은 자전거입니다.
당신의 점수는 200이고, 상품은 TV입니다.
당신의 점수는 300이고, 상품은 노트북입니다.
당신의 점수는 400이고, 상품은 자동차입니다.
죄송하지만 당신의 점수는 해당상품이 없습니다.

switch문 > if ~else문 (학점계산기 02)

switch

if ~else

결과

당신의 점수는 90점 이상입니다.
당신의 점수는 80점 이상입니다.
당신의 점수는 70점 이상입니다.
당신의 점수는 60점 이상입니다.

switch문 > 삼항연산자 (학점계산기 03)

switch

삼항연산자

결과 :

당신의 점수는 90점 이상입니다.
당신의 점수는 80점 이상입니다.
당신의 점수는 70점 이상입니다.
당신의 점수는 60점 이상입니다.

품질 1단계 if ~else (계산기 프로젝트 01)

argument 입력

 메뉴 - Run Configrations 선택

 Arguments 탭을 선택해서 Program arguments 칸에 "3 add 5" 입력

if ~else

결과 :

8

switch문 > if ~else, 삼항연산자 (점수-상품 03)

switch

if ~else

삼항연산자

결과 :

당신의 점수는 100이고, 상품은 자전거입니다.
당신의 점수는 200이고, 상품은 TV입니다.
당신의 점수는 300이고, 상품은 노트북입니다.
당신의 점수는 400이고, 상품은 자동차입니다.
죄송하지만 당신의 점수는 해당상품이 없습니다.

switch문 > if ~else, 삼항연산자 (점수-상품 04)

switch

if ~else

삼항연산자

결과 :

당신의 점수는 100이고, 상품은 자전거입니다.
당신의 점수는 200이고, 상품은 TV입니다.
당신의 점수는 300이고, 상품은 노트북입니다.
당신의 점수는 400이고, 상품은 자동차입니다.
죄송하지만 당신의 점수는 해당상품이 없습니다.

switch문 > if문, 삼항연산자 (학점계산기 04)

switch

If ~else

삼항연산자

결과 :

당신의 점수는 90점 이상입니다.
당신의 점수는 80점 이상입니다.
당신의 점수는 70점 이상입니다.
당신의 점수는 60점 이상입니다.

switch문 > if문, 삼항연산자 (학점계산기 05)

switch

if ~else

삼항연산자

결과 :

당신의 점수는 90점 이상입니다.
당신의 점수는 80점 이상입니다.
당신의 점수는 70점 이상입니다.
당신의 점수는 60점 이상입니다.

while > for, do while (구구단 01)

while

for

do ~while

결과 : 구구단

while > for, do while (랜덤 숫자 출력)

while

for

do while

결과 :

do ~while > while, for (문자입력)

do ~while

while

for

결과 :

문장을 입력하세요.
입력을 마치려면 x를 입력하세요.
a
x

for > while, do while (10까지의 합 01)

for

while

do while

결과

10까지의 합 : 55

이중 for문 > while, do while (구구단 03)

이중 for문

중복 while문

do ~while

배열을 이용한 도표 만들기 (01)

다음 프로그램을 근거로, 도표를 작성하시오.

문제

배열

배열을 이용한 도표 만들기 (02)

다음 프로그램을 근거로, 도표를 작성하시오.

문제

배열

배열을 이용한 도표 만들기 (03)

다음 프로그램을 근거로, 도표를 작성하시오.

문제

배열

배열을 이용한 도표 만들기 (04)

다음 프로그램을 근거로, 도표를 작성하시오.

문제

배열

배열을 이용한 도표 만들기 (05)

다음 프로그램을 근거로, 도표를 작성하시오.

문제

배열

성적처리 표 만들기 (01)

성적표 만들기

배열

성적처리 표 만들기 - 석차 (02)

석차 표 만들기

배열

성적처리 표 만들기, 품질 1단계 (03)

석차 표 만들기

해답

성적처리 표 만들기, 품질 2단계 (04)

석차 표 만들기

Score

TestScore

성적처리 표 만들기, 품질 3단계 (05)

석차 표 만들기

PScore

Score

TestScore

성적처리 표 만들기, 품질 4단계 (06)

석차 표 만들기

PScore

PScore

TestScore

성적처리 표 만들기, 품질 5단계 (07)

석차 표 만들기

IScore

Score

TestScore

UML 사용

품질 1단계 (계산기 프로젝트 02)

Integer.pharseInt 사용

TestCal

결과 :

8

품질 2단계 (계산기 프로젝트 03)

메서드 정의 사용하기

TestCal

Cal

결과 :

8

품질 3단계 (계산기 프로젝트 04)

상속관계를 사용

TestCal

Cal

PCal

결과 :

8

품질 4단계 (계산기 프로젝트 05)

상속 + 메서드 정의

TestCal

Cal

CalP

결과 :

8

품질 5단계 (계산기 프로젝트 06)

interface 의 사용

TestCal

CalImpl

ICal

결과 :

8

품질 1단계 - 실행클래스, (FooBarBaz 03)

TestFooBarBaz

품질 2단계 - 헬퍼클래스, (FooBarBaz 04)

FooBarBaz

TestFooBarBaz

품질 3단계 - 단순클래스 상속, (FooBarBaz 05)

PFooBarBaz

FooBarBaz

TestFooBarBaz

품질 4단계 - 추상클래스 상속, (FooBarBaz 06)

FooBarBaz

PFooBarBa

TestFooBarBaz

품질 5단계 - 인터페이스 구현 상속, (FooBarBaz 07)

IFooBarBaz

FooBarBazImpl

TestFooBarBaz

품질 6단계 (계산기 프로젝트 07)

Loose Abstract Coupling

ICal

CalImpl

Cal

TestCal

성적처리 표 만들기, 품질 6단계 (08)

IScore

ScoreImpl

Score

TestScore

품질 6단계(FooBarBaz 03)

IFooBarBaz

FooBarBazImpl

FooBarBaz

TestFooBarBaz

공학계산기 - 품질 1단계

엘레베이터 프로젝트 01

예제

Elevator

ElevatorTest

엘레베이터 프로젝트 02

예제

IfElevator

IfElevatorTest

엘레베이터 프로젝트 03

예제

NestedIfElevator

NestedIfElevatorTest{

엘레베이터 프로젝트 04

예제

IfElseElevator

IfElseElevatorTest

엘레베이터 프로젝트 05

예제

WhileElevator

WhileElevatorTest

엘레베이터 프로젝트 06

do ~while문을 활용해서 Refactoring

DoWhileElevator

DoWhileElevatorTest

엘레베이터 프로젝트 07

엘레베이터 프로젝트 05 , 06 리펙토링

예제

ForElevator

ForElevatorTest

객체카운터 프로젝트 - 품질 1단계

문제 : 객체를 생성할 때마다 카운트를 하여, 총 몇 개의 객체가 생성되었는지 출력하는 프로그램을 작성하시오.

TestCounter

객체카운터 프로젝트 - 품질 2단계

문제 : 객체를 생성할 때마다 카운트를 하여, 총 몇 개의 객체가 생성되었는지 출력하는 프로그램을 작성하시오.

예제

Counter

TestCounter

객체카운터 프로젝트 - 품질 3단계

PCounter

Counter

TestCounter

객체카운터 프로젝트 - 품질 4단계

PCounter

Counter

TestCounter

객체카운터 프로젝트 - 품질 5단계

ICounter

Counterimpl

객체카운터 프로젝트 - 품질 6단계

ICounter

CounterImpl

Counter

TestCounter

가위바위보 프로젝트 - 품질 1단계

TestWinner

가위바위보 프로젝트 - 품질 2단계

Rsp

TestRsp

가위바위보 프로젝트 - 품질 3단계

PRsp

Rsp

TestRsp

가위바위보 프로젝트 - 품질 4단계

PRsp

Rsp

TestRsp

가위바위보 프로젝트 - 품질 5단계

IRsp

RspImpl

TestRsp

가위바위보 프로젝트 - 품질 6단계

IRsp

Rspimpl

Rsp

TestRsp

계산기 프로젝트 - 품질 7단계

ICal

CalImpl

CalVO

Cal

TestCal

성적처리 표 만들기, 품질 7단계 (09)

IScore

ScoreImpl

ScoreVO

Score

TestScore

품질 7단계(FooBarBaz 04)

IFooBarBaz

FooBarBazImpl

FooBarBazVO

FooBarBaz

TestFooBarBaz

엘레베이터 프로젝트 - 품질 7단계 (08)

IElevator

ElevatorImpl

ElevatorVO

Elevator

ElevatorTest

품질 7단계 (계산기 프로젝트 08)

ICal

CalImpl

CalVO

Cal

TestCal

성적처리 표 만들기, 품질 8단계 (09)

예외처리, Built-In

IScore

ScoreImpl

ScoreImpl

ScoreVO

Score

TestScore

엘레베이터 프로젝트 - 품질 8단계 (09)

IElevator

ElevatorImpl

ElevatorVO

Elevator

ElevatorTest

품질 8단계(FooBarBaz 04)

예외처리, Built-in

IFooBarBaz

FooBarBazImpl

FooBarBazVO

FooBarBaz

TestFooBarBaz

품질 9단계 (계산기 프로젝트 09)

예외처리, User-Defined

IScore

ScoreImpl

ScoreVO

Score

TestScore

User Defined Exception

엘리베이터 프로젝트 (J2SE, 품질9단계, 예외처리, User-Defined)

성적처리 프로젝트 (J2SE, 품질9단계, 예외처리, User-Defined)

소스 'User-Defined Exception'

IElevator

ElevatorImpl

ElevatorVO

Elevator

ElevatorTest

User Defined Exception

FooBarBaz 프로젝트 (J2SE, 품질9단계, 예외처리, User-Defined)

소스

IFooBarBaz

FooBarBazImpl

FooBarBazVO

FooBarBaz

TestFooBarBaz

User Defined Exceptiontitle

람다식 개념

LambdaFunctionEx.java

함수적 인터페이스 1

LambdaEx.java

함수적 인터페이스 2

LambdaEx2

함수적 인터페이스 3

LambdaEx3

함수적 인터페이스 4

LambdaEx4

함수적 인터페이스 5

LambdaEx5

Banking Project 버전 1

Account

CheckingAccount

SavingsAccount

TestTypeSafety

Banking Project 버전 2

Account

SavingsAccount

CheckingAccount

TestTypeSafety


Account

CheckingAccount

SavingsAccount

TestSafety

Banking Project 버전 3

Account

SavingsAccount

CheckingAccount

TestTypeSafety


Account

CheckingAccount

SavingsAccount

TestSafety

Banking Project

title

Banking Project (Class Diagram)

계산기 프로젝트 (J2SE 버전, 품질10단계, 멀티쓰레드)

ICal

CalImpl

CalThread

CalVO

Cal

TestCal

User Defined Exception

SubZeroException

MulOneException

DivOneException

성적처리 프로젝트 (J2SE 버전, 품질10단계, 멀티쓰레드)

IScore

ScoreImpl

ScoreThread

ScoreVO

Score

TestScore

User Defined Exception

엘리베이터 프로젝트 (J2SE 버전, 품질10단계, 멀티쓰레드)

IElevator

ElevatorImpl


Thread inheritance class

CloseDoorThread

OpenDoorThread

GoUpThread

GoDownThread

ElevatorVO

Elevator

ElevatorTest


User Defined Exception

CannotGoUpException

FooBarBaz 프로젝트 (J2SE 버전, 품질10단계, 멀티쓰레드)

IFooBarBaz

FooBarBazImpl

FooBarBazThread

FooBarBazVO

FooBarBaz


User Defined Exception

FooBarBazException

Banking Project (J2SE 버전, 품질1단계)

예제

Account

title

CheckingAccount

TestTypeSafety


TestAccount

Banking Project (J2SE 버전, 품질2단계)

SavingsAccount

CheckingAccount

TestSafety

과제 93

title

과제 94

title

과제 95

title

과제 96

title

과제 97

title

과제 98

title

과제 99

title

과제 100

title

과제 101

title

과제 102

title