토요일, 1월 11
Shadow

#030 Controlling Access to Members of a Class

미분류
Access level modifiers determine whether other classes can use a particular field or invoke a particular method. There are two levels of access control: At the top level—public, or package-private (no explicit modifier). At the member level—public, private, protected, or package-private (no explicit modifier). A class may be declared with the modifier public, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package (packages are named groups of related classes—you will learn about them in a later lesson.) At the member level, you can also use the public modifier or no modifier (package-private) just as with top-level classes, and with the same meaning. For me...

#029 Using this with a Constructor

미분류
From within a constructor, you can also use the this keyword to call another constructor in the same class. Doing so is called an explicit constructor invocation. Here's another Rectangle class, with a different implementation from the one in the Objects section. public class Rectangle { private int x, y; private int width, height; public Rectangle() { this(0, 0, 0, 0); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } ... } This class contains a set of constructors. Each constructor initializes some or all of the rectangle's member variab...

#028 Using this with a Field

미분류
The most common reason for using the this keyword is because a field is shadowed by a method or constructor parameter. For example, the Point class was written like this public class Point { public int x = 0; public int y = 0; //constructor public Point(int a, int b) { x = a; y = b; } } but it could have been written like this: public class Point { public int x = 0; public int y = 0; //constructor public Point(int x, int y) { this.x = x; this.y = y; } } Each argument to the second constructor shadows one of the object's fields—inside the constructor x is a local copy of the constructor's first argument. To refer to the Point field x, the constructor must use this.x.

#027 The Garbage Collector

미분류
Some object-oriented languages require that you keep track of all the objects you create and that you explicitly destroy them when they are no longer needed. Managing memory explicitly is tedious and error-prone. The Java platform allows you to create as many objects as you want (limited, of course, by what your system can handle), and you don't have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is called garbage collection. An object is eligible for garbage collection when there are no more references to that object. References that are held in a variable are usually dropped when the variable goes out of scope. Or, you can explicitly drop an object reference by setting the variable to the...

#005 구글 플렉스 소개

미분류
다들 아실지 모르겠는데요.. 좋은 정보 하나 드립니다. http://video.google.com/googleplex.html 여기 보시면, 구글 테크토크 자료가 있습니다. 물론 영어이나, 자막처리가 되어 있습니다. 또한 컴퓨터공학 뿐만 아니라 다양한 주제가 있네요. 즉, 영어에 관심이 있으신 분들도 재미있게 보실 수 있을거 같구요. 여러 최신 소식도 접할 수 있을거라 봅니다. Videos from the Googleplex In addition to helping distribute content from across the world, Google would like to share videos featuring our company. The videos on this page give you an overview of our culture, products and business. Whether it's a scientist discussing their latest work or one of our campus events, we hope to provide a sample of great conversations and presentations. Over time we'll continue to add more videos "From the Googleplex." 사회적으로, 정보에 대한 public distribution 이 어느때보다 중요해 지고 있다는 생각이 듭니다. 또한 경쟁력 있는 회사나 학교일 수록, 자신들이 가지고 있는 자원을 공개하고 있는 추세이기도 합니다. ...

#026 javaboutique tutorials

미분류
Tutorials for everyone, from experienced programmers to the novice.   All About the Singleton Design PatternUsing the Singleton pattern allows you to have a class distribute the only instance of itself. This restricts instantiation of a class to one, which can be useful when you require exactly one object to coordinate actions across an application. Generate a PDF Report from a Database with BIRTBusiness Intelligence and Reporting Tools (BIRT) is an Eclipse plug-in reporting system for Web applications. It supports data access from databases, XML documents, EJBs, Web services, JavaBeans, and POJOs. Learn the ins and outs by generating a sample PDF report from a sample database. Parsing with StAX in JDK 6.0Most developers parse their XML documents with the DOM or SAX APIs--...

#025 백터

미분류
java.lang.Object l Class getClass() 객체에 대한 정보를 포함하고 있는 Class 객체를 반환한다. 다음 절에서 보겠지만, 자바는 Class 클래스 안에 캡슐화 되어 있는 클래스의 실행시간 표현을 가지고 있다. l boolean equals(Object obj) 두개의 객체가 동등한지 비교한다. 객체가 같은 메모리 영역을 가리키고 있으면 참값을, 아니면 거짓값을 반환한다. l Object clone() 객체의 복제본을 만든다. 자바는 새로운 인스턴스에 대한 메모리를 할당하고, 현재 객체에 할당 되어 있는 메모리를 복사한다. l String toString() 이 객체의 값을 표현하는 문자열을 반환한다. 대부분의 클래스는 객체의 현재 상태를 출력하기 위해 이 메소드를 중복시킨다. 예를 들면, Date 클래스에서의 toString 은 날짜를 표현하는 문자열을 반환한다. 벡터들(vectors) 특히 C 를 비롯한 많은 프로그램 언어들에서 컴파일 시에 모든 배열들의 크기를 확정해야 한 다. 프로그래머들은 이러한 점이 끼치는 불편함으로 인해 굉장히 싫어한다. 자바에는 좀 더 낳아졌다. 배열의 크기를 런타임에서 설정할 수 있다. int n; . . . Item[] itemOrdered = new Item[n+1]; 물론, 이 코드가 런타임에서 배열을 동적으로 바꿀 수 있도록 완전하게 해결하지는 못했다. 배열의 크기를 한 번 정하고 나면 쉽게 바꿀 수 없다. 대신에 자바에서는 vector 라는 객체를 사용하여 배열을 늘렸다 줄였다 하며 사용할 수 있도록 ...

#024 protected

미분류
보호된 접근 여러분이 이미 알다시피, 클래스의 인스턴스 필드는 보통 private 태그가 붙고, 메소드는 public 태그가 붙는다. private 으로 선언된 특성은 다른 클래스에서 보이지 않는다. 이것은 또한 하위 클래스에서도 마찬가지이다. 하위 클래스는 상위 클래스의 은폐 데이터를 접근할 수 없다. 하지만, 하위 클래스가 메소드나 데이터를 접근하고자 할 때도 있다. 이 경우, protected 로 선언해야 한다. 예를 들면, 기반 클래스인 Employee 가 hireDay 객체를 private 대신 protected 로 선언하면, Manager 메소드는 이것을 직접 접근할 수 있다. 실제로는 protected 특성을 주의하여 사용해야 한다. 여러분의 클래스가 다른 프로그래머에 게 사용되고 있고, 이것이 보호된 데이터를 포함하고 있다고 가정하자. 여러분이 모르는 다른 프로그래머가 여러분의 클래스로부터 파생하여 보호된 인스턴스 필드를 접근할런지 모른다. 이 경우에 다른 프로그래머를 방해하지 않고 여러분의 클래스의 구현을 변경할 수 없다. 보호된 메소드의 경우를 살펴보자. 클래스는 메소드를 protected 로 선언할 수 있다. 이것은 하위 클래스(아마도 조상을 아는)는 이 메소드를 사용할 수 있고, 다른 클래스는 사용할 수 없 음을 의미한다. C++노트 : 자바의 protected 특성은 모든 하위 클래스 뿐만이 아니라 같은 패키지 안의 다른 클래스에서 사용할 수 있다. 이것은 C++의 protected 의 의미와 약간 다르다. 실제로 이런 차 이점은 거의 신경을 쓰지 않아...

#023 상속

미분류
class Manager extends Employee { added methods and fields } 다음은 Employee 클래스를 확장하여 만든 Manager 클래스에 대한 코드이다. class Manager extends Employee { public Manager(String n, double s, Day d) { super(n, s, d); secretaryName = ""; } public void raiseSalary(double byPercent) { // add 1/2% bonus for every year of service Day today = new Day(); double bonus = 0.5 * (today.getYear() - hireYear()); super.raiseSalary(byPercent + bonus); } public String getSecretaryName() { return secretaryName; } public void setSecretaryName(String name) { secretaryName = name; } private String secretaryName; } 키워드 extends 는 기존의 클래스로부터 파생되는 새로운 클래스를 생성한다는 것을 가리킨 다. 기존의 클래스를 상위 클래스(superclass), 기반 클래스(base class), 또는 부모 클래스(parent class)라고 한다. 새로운 클래스를 하위 클래스(subclass), 파생 클래스(derived class), 또는...

#022 메소드 및 정리

미분류
은폐(private) 메소드 클래스를 구현할 때 public 데이터는 위험하므로 모든 데이터 필드는 은폐형으로 만든다. 메 소드의 경우에는 어떠한가?, 대개 public 으로 되어 있지만 private 메소드는 자주 쓰인다. 이 메소드는 클래스의 다른 연산으로부터만 호출된다. 이유는 간단하다. 연산을 구현하기 위 해 코드를 여러 개의 함수로 쪼개기를 원할 수 있다. 이런 함수의 대부분은 공용으로 쓰기에는 유용하지 않다.(예를 들면, 이것들은 현재 구현에 너무 밀접하게 접근해 있고, 특별한 프로토 콜이나 호출 순서를 필요로 할 수도 있다.) 이러한 메소드는 private 연산으로 구현되는 것 이 제일 좋다. 중복(Overloading) 자바의 Date 클래스와 우리의 Day 클래스는 하나 이상의 생성자를 가졌다는 사실을 상기해 보자. 우리는 다음을 사용할 수 있다. Date today = new Date(); 또는 Date preMillenium = new Date(1999, 12, 31); 이런 기능을 중복(overloading)이라 한다. 중복은 다수의 메소드가 동일한 이름(이 경우 Date 생성자 메소드)가지고 있으나 다른 인자를 가질 경우 발생한다. 자바 인터프리터는 어 느 메소드를 호출할지 결정해야한다.(이것을 보통 중복 해결(overloading resolution) 이라고 한다.) ---------------------------------------------------------------------- 노트 : 자바는 생성자 메소드를 포함한 어떤 메소드라도 ...