본문 바로가기

객체

클래스, 인스턴스, 객체 클래스(Class): 클래스란 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype)이라 할 수 있습니다. 예를 들어, 실세계에 존재하는 자동차들인 아반떼, 누비라, 그랜저, 티코, 아토스, 봉고, 또는 버스 등의 자동차들이 가질 수 있는 상태 정보와 행동에 대하여 일반화시켜 정의해 놓은 것이 자동차 클래스가 될 수 있습니다. 다시 말해서, 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화(abstraction) 해 놓은 것이 클래스라는 것입니다. 이러한 클래스를 청사진이라 표현하기도 하고, 벽돌을 찍기 위한 하나의 틀로써 비유되기도 합니다. 인스턴스(I.. 더보기
[Head First Java] Chapter4 크기와 짖는 소리 Dog 클래스에는 size라는 인스턴스 변수가 있는데, bark() 메소드에서 이 값을 이용하여 짖는 소리를 결정할 수 있다.. 소스 class Dog { int size; String name; void bark(){ if(size > 60){ System.out.println("Wooof! Wooof!"); } else if(size > 14){ System.out.println("Ruff! Ruff!"); } else{ System.out.println("Yip! Yip!"); } } } public class DogTestDrive { public static void main(String[] args) { Dog one = new Dog(); one.size = 70; Dog two = new .. 더보기
[Head First Java] Chapter3 연습문제 수영장 퍼즐 코드 조각을 한번만 사용하여 아래와 같은 출력 결과를 얻어야 한다. 출력 결과 triangle 0, area = 4.0 triangle 1, area = 10.0 triangle 2, area = 18.0 triangle 3, area = 28.0 y = 4, t5 area = 343.0 코드 조각 x y area ta.area ta.x.area ta[x].area Triangel[] ta = new Triangle(4); Triangle ta = new[] Triange[4]; Triangle[] ta = new Triangle[4]; 4, t5 area = 18.0 4, t5 area = 343.0 27, t5 area = 18.0 27, t5 area = 343.0 ta[x] = setArea();.. 더보기
[Head First Java] Chapter3 연습문제 코드 자석 코드 조각을 가지고 아래와 같은 출력 결과를 가지는 코드를 만들어야 한다. 출력결과 island = Fiji island = Cozumel island = Bermuda island = Azores 코드 조각 int y = 0; ref = index[y]; islands[0] = "Bermuda"; islands[1] = "Fiji" islands[2] = "Azores"; islands[3] = "Cozumel"; int ref; while(y < 4){ system.out.println(islands[ref]); index[0] = 1; index[1] = 3; index[2] = 0; index[3] = 2; String[] islands = new String[4]; System.out.print.. 더보기
[Head First Java] Chapter3 연습문제 컴파일러가 되어봅시다. B문제 소스가 컴파일을 할 수 있는지 확인 문제 소스 public class Hobbits { String name; public static void main(String[] args) { Hobbits[] h = new Hobbits[3]; int z = 0; while(z < 4){ z = z + 1; h[z] = new Hobbits(); h[z].name = "bilbo"; if(z == 1){ h[z].name = "frodo"; } if(z == 2){ h[z].name = "sam"; } System.out.print(h[z].name + " is a "); System.out.println("good Hobbit name"); } } } 정답 public class Hobbits { String.. 더보기
[Head First Java] Chapter3 연습문제 컴파일러가 되어봅시다. A문제 소스가 컴파일을 할 수 있는지 확인 문제 소스 class Books { String title; String author; } public class BooksTestDrive { public static void main(String[] args) { Books[] myBooks = new Books[3]; int x = 0; myBooks[0].title = "The Grapes of Java"; myBooks[1].title = "The Java Gatsby"; myBooks[2].title = "The Java Cookbook"; myBooks[0].author = "bob"; myBooks[1].author = "sue"; myBooks[2].author = "ian"; while(x 더보기
[Head First Java] Chapter2 연습문제 수영장 퍼즐 코드 조각을 한번만 사용하여 아래와 같은 출력 결과를 얻어야 한다. 출력 결과 helloooo.... helloooo.... helloooo.... helloooo.... 10 코드 조각 e1 = e1 + 1; e1 = count + 1; e1.count = count + 1; e1.count = e1.count + 1; x y e2 count x < 4 x < 5 x > 0 x > 1 Echo Tester echo() count() hello() e2 = e1; Echo e2; Echo e2 = e1; Echo e2 = new Echo(); x == 3 x == 4 문제 public class EchoTestDrive { public static void main(String[] args){ Echo .. 더보기
[Head First Java] Chapter2 연습문제 코드 자석 아래와 같은 출력 결과를 가지는 코드를 만들어야 한다. bang bang ba-bang ding ding da-ding 코드 조각은 아래와 같다. d.playSnare(); DrumKit d = new DrumKit(); void playSnare(){ System.out.println("bang bang ba-bang"); } public static void main(String[] args){ if(d.snare == true){ d.playSnare(); } d.snare = false; class DrumKitTestDrive{ d.playTopHat(); class DrumKit { void playTopHat(){ System.out.println("ding ding da-ding"); } .. 더보기
[Head First Java] Chapter2 연습문제 컴파일러가 되어봅시다. B문제 소스가 컴파일을 할 수 있는지 확인 소스 class DVDPlayer { boolean canRecord = false; void recordDVD(){ System.out.println("DVD recording"); } } class DVDPlayerTestDrive{ public static void main(String[] args){ DVDPlayer d = new DVDPlayer(); d.canRecord = true; d.playDVD(); if(d.canRecord == true){ d.recordDVD(); } } } 수정된 소스 class DVDPlayer { boolean canRecord = false; void recordDVD(){ System.out.println("DVD r.. 더보기
[Head First Java] Chapter2 연습문제 컴파일러가 되어봅시다. A문제 소스가 컴파일을 할 수 있는지 확인 소스 class TapeDeck{ boolean canRecord = false; void playTape(){ System.out.println("tape playing"); } void recordTape(){ System.out.println("tape recording"); } } class TapeDeckTestDrive{ public static void main(String[] args){ t.canRecord = true; t.playTape(); if(t.canRecord == true){ t.recordTape(); } } }수정된 소스 class TapeDeck{ boolean canRecord = false; void playTape(){ Syst.. 더보기
[Head First Java] Chapter2 객체지향적 프로그래밍 핵심 정리 제작과 테스트가 끝난 코드를 건드리지 않고 프로그램을 확장할 수 있다. 모든 자바 코드는 클래스 내에서 정의 된다. 클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는 역할을 한다. 객체는 각자 알아서 자기 할 일을 처리할 수 있다. 객체에는 알고 있는것(속성)과 할 수 있는 것(메소드)이 있다. 객체가 자기 자신에 대해 알고 있는 것은 인스턴스 변수이다. 객체가 할 수 있는 것은 메소드라고 부른다. 클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다. 클래스에서는 덜 구체적인 상위클래스로부터 인스턴스 변수와 메소드를 상속할 수 있다. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 객체에 불과하다. 더보기
[Head First Java] Chapter2 숫자 맞추기 게임 숫자 맞추기 게임에서는 객체가 서로 다른 객체의 메소드를 호출하는 방법을 보여주고 있다. GuessGame 클래스 public class GuessGame { //인스턴스 변수 선언 Player p1; Player p2; Player p3; public void startGame(){ //메소드 선언 //Player 객체를 각 인스턴스 변수에 대입 p1 = new Player(); p2 = new Player(); p3 = new Player(); //찍을 숫자 설정 int guessp1 = 0; int guessp2 = 0; int guessp3 = 0; //찍은 숫자가 맞는지 여부를 저장하기위한 변수 선언 boolean p1isRight = false; boolean p2isRight = false;.. 더보기
[Head First Java] Chapter2 Movie 객체를 만들어 테스트해봅시다. 앞에 첫 객체를 만드는 것 이라면 이번에는 응용이었다. Movie 클래스 class Movie { String title; String genre; int rating; void playIt(){ System.out.println("영화를 상영합니다."); } } MovieTestDrive 클래스 public class MovieTestDrive { public static void main(String[] args) { Movie one = new Movie(); one.title = "주식과 함께 사라지다"; one.genre = "비극"; one.rating = -2; Movie two = new Movie(); two.title = "로스트 인 큐비클 스페이스"; two.genre = "코미디";.. 더보기
[Head First Java] Chapter2 첫 번째 객체를 만들어 봅시다. 객체를 만들고 사용려면 어떻게 해야하는지 알려주고 있다. class Dog { int size; String breed; String name; void bark(){ System.out.println("Ruff! Ruff!"); } } class DogTestDrive { public static void main(String[] arg){ Dog d = new Dog(); d.size = 40; d.bark(); } } 출력 결과 Ruff! Ruff! 처음으로 만들어 봤다. Dog 클래스를 만들고 main 메소드에서 Dog 객체를 만들어 메소드 안에서 설정하고 호출을 할 수 잇다는 것을 알게 되었다. 더보기