일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바의 정석 기초편
- 권리장전 검열각하
- Java
- 양정웅
- 중국식 룰렛
- 오세혁
- 2인극
- java의 정석
- 인하극회
- 김희재
- 서울시극단
- 국립극단
- 자바
- 산울림소극장
- 뮤지컬
- 자바의 정석
- 배열
- 전인철
- 창작산실
- 30스튜디오
- 연희단거리패
- 김이설
- 극단 파수꾼
- 서강대메리홀
- 자바의 정석 요약집
- 연극
- 극단 여행자
- 김광보 연출
- 서울시연극폭탄
- 남산예술센터
- Today
- Total
목록IT (38)
Romantic Production
7-29 여러 종류의 객체를 배열로 다루기 조상타입의 참조변수로 자손 타입의 객체를 참조하는 것이 가능하므로, Product클래스가 Tv, Computer, Audio 클래스의 조상일 때, 다음과 같이 할 수 있다. Product p1 = new Tv(); Product p2 = new Computer(); Product p3 = new Audio(); 위 코드를 Product 타입의 참조변수 배열로 처리 할 수 있다. Product p[] = new Product[3]; p[0] = new Tv(); p[1] = new Computer(); p[3] = new Audio(); 조상타입의 참조변수 배열을 사용하면, 공통의 조상을 가진 서로 다른 종류의 객체를 배열로 묶어서 다룰 수 있다. 이전 게시물 마..
7-23 다형성(polymorphism) 다형성 : 여러 가지 형태를 가질 수 있는 능력 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조 class Tv{ boolean power; //전원상태(on/off) int channel; //채널 void power(){power = !power} void channelUp(){++channel;} void channelDown(){--channel;} } class SmartTv extends Tv{ String text; //캡션(자막)을 보여주기 위한 문자열 void caption(){/*내용 생략*/} 지금까지는 아래와 같이 인스턴스의 타입과 일치하는 타입의 참조변수만을 사용했다. Tv ..
7-12 패키지(package) 클래스의 묶음이다. 클래스 또는 인퍼테이스를 포함 시킬 수 있다. 관련된 클래스들끼리 그룹 단위로 묶어 효율적으로 관리할 수 있다. 같은 이름의 클래스도 다른 패키지에 존재 가능하다.(클래스의 실제 이름(full name)은 패키지명을 포함한 것이기 때문) 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉트리가 하위 디렉토리를 가질 수 있는 것처럼 패키지도 다른 패키지를 포함할 수 있으며, 점'.'으로 구분한다. 예. java.lang.String 클래스 물리적으로 디렉토리 java의 서브디렉토리 lang에 속한 String.class파일이며, java패키지의 하위 패키지인 lang패키지의 String클래스다. ..
7-1 상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 보다 적은 양의 코드로 새로운 클래스 작성 가능 코드를 공통적으로 관리 할 수 있어 코드의 추가 및 변경 용이 (코드의 재사용성을 높이고, 중복을 제거, 프로그램의 생산성과 유지보수에 크게 기여) 클래스이름 extends 상속받고자하는 클래스이름 class Parent{} class Child extends Parent{ // ... } 상속해주는 클래스를 '조상 클래스' 상속받는 클래스를 '자손 클래스' 이 두 클래스는 서로 상속 관계에 있다고 한다. 위 그림처럼 상속관계를 그림으로 표현한 것을 상속계층도(class hierarachy)라고 한다. 그리고 아래와 같이 표현할 수도 있다. 자손 클래스는 조상 클래스의 모든..
6-30 오버로딩(overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입은 관계 없다. 메서드 오버로딩의 대표적인 예는 println메서드다. PrintStream 클래스에 어떤 종류의 매개변수를 지정해도 출력할 수 있도록 10개의 오버로딩된 println 메서드를 정의해놓고 있다고 한다. void println() void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void println(int x) void println(long x) void..
6-22 호출스택(call stack) 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간 결과 등을 저장하는데 사용된다. 메서드가 작업을 마치면 할당되었던 메모리 공간은 반환되어 비어진다. public class Ex6_05 { public static void main(String[] args) { System.out.println("Hello"); } } ①~② 위의 예제를 실행시키면, JVM에 의해서 main메서드가 호출됨으로써 프로그램이 시작된다. 이 때, 호출스택에는 main메서드를 위한 메모리 공간이 할당되고 mian 메서드의 코드..
6-14 메서드란? 메서드(method) 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것.(수학의 함수와 유사) 메서드에 넣을 값(입력)과 반환하는 결과(출력)만 알면 된다. 내부적으로 어떻게 작동하는지 몰라도 된다. 메서드는 크게 두 부분, 선언부(header)와 구현부(body)로 이루어져 있다. 반환타입 메서드이름 (타입 변수명, 타입 변수명, ...) //선언부 { //구현부 //메서드 호출시 수행될 코드 //구현부 } int add (int a, int b) //선언부 { //구현부 int result = a+b; //구현부 return result; //호출한 메서드로 결과를 반환 //구현부 } 6-15 메서드의 선언부 메서드의 선언부는 메서드의 이름, 매개변수 선언, 반환 타입 으로 구..
6-9 클래스의 정의(1) - 데이터와 함수의 결합 프로그래밍 언어에서 데이터 처리를 위한 데이터 저장형태의 발전과정은 다음과 같다. 변수 하나의 데이터를 저장할 수 있는 공간 배열 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간 구조체 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간 클래스 데이터와 함수의 결합(구조체+함수) 6-10 클래스의 정의(1) - 사용자 정의 타입 사용자 정의 타입(user-defined type): 서로 관련된 변수들을 묶어 하나의 타입으로 새로 추가하는 것. 객체지향언어에서는 클래스가 곧 사용자 정의 타입이다. (참조형의 개수가 정해져있지 않은 것이 이와 같은 이유 때문이다.) int hour; //시간을 표현하기 위한 변수..
6-1 객체지향 언어 객체지향 언어는 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다. 1. 코드의 재사용성이 높다. ->새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. ->코드간의 관게를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. ->제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 재사용성 유지보수 중복든 코드의 제거 앞으로 객체지향 개념을 학습할 때 이 세가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다. 너무 객체지향개념에 얽매여서 고민하기 보다는..
연습문제5에서 배열의 위치를 바꿀 때 Math.random() 메서드를 이용했는데 이 방법에 의구심이 들었지만 일단은 이런 방법이 있다 정도로만 넘어갔었다. 사실 엄청 간단한겨였지만 이상하게 한 번 납득이 안되면 마치 고집처럼 잘 이해가 되지 않았는데 그래도 이젠 스스로 완전히 납득이 됐다. 우선 연습문제 5_5를 예를 들겠다. int[] ballArr = {1,2,3,4,5,6,7,8,9}; 이 배열을 임의로 순서를 바꿔보겠다. 그때 해설에서 나온 정답은 //배열 ballArr의 임의의 요소를 골라서 위치를 바꾼다. for(int i=0; i