'class'에 해당되는 글 3건

  1. 2012.09.12 실행 중인 class의 경로 구하기
  2. 2010.01.18 [Ruby] 클래스에 대한 간단한 설명
  3. 2009.03.16 클래스 기초
Programming/JAVA2012.09.12 21:07

현재 실행 중인 class 파일의 절대 경로 구하기

String path = MyClass.class.getResource(".").getPath();


출처 : http://mrjh.com/wiki/content.php?no=211&page=5

신고
Posted by 초프(초보 프로그래머)
Programming2010.01.18 23:15

 2년인가 3년만에 다시보면서 클래스에 대해서 간단히 정리해 보겠습니다.

기본 정의

class Person
end

생성자 포함 (멤버변수 name 추가)

class Person
	def initialize(name)
		@name = name
	end

	def getName
		return @name
	end
end

객체생성
class Person
	def initialize(name)
		@name = name
	end

	def getName
		return @name
	end
end

person = Person.new("YHG")
puts person.getName

속성 1

def name() 은 읽기 속성으로 name은 읽기만 가능 하다는 것입니다.
def name=(name) 은 쓰기 속성으로 name을 쓰기만 가능 하다는 것입니다.
하나만 사용해도 되고 이렇게 같이 사용해도 됩니다
class Person
	def name()
		@name
	end

	def name=(name)
		@name = name
	end

	def initialize(name)
		@name = name
	end

	def getName
		return @name
	end
end

속성 2

속성 1에서 사용했던 읽기, 쓰기 속성은 다음과 같이 간단하게 사용이 가능합니다.
class Person
	attr_reader : name
	attr_writer : name

	def initialize(name)
		@name = name
	end

	def getName
		return @name
	end
end

속성 3

읽기와 쓰기 둘다 사용할 경우 attr_accessor로 한번에 선언이 가능합니다.
class Person
	attr_accessor : name

	def initialize(name)
		@name = name
	end

	def getName
		return @name
	end
end

상속
class Male < Person
	def initialize(name,age)
		super(name)
		@age = age
	end

	def getAge
		return @age
	end
end

접근 권한 제한

c++과 마찬가지로 3가지의 권한이 존재합니다.
public, protected, private
기본 내용은 c++과 같습니다.

클래스 변수

c++의 static 객체변수 입니다. 같은 Class에서는 단 하나의 변수만 존재합니다. 즉 A 라는 Class로 생성한 모든 Object는 그 변수를 공유하게 됩니다.
@name 은 일반 객체변수 이지만 @@name은 클래스 변수 입니다.

클래스 메소드

C++의 static method 와 같습니다.
class Math
	def Math.add(numA, numB)
		return numA + numB
	end
end

모듈

" 여러개의 클래스를 조작하는 코드를 작성하는 대신 모듈이 제공하는 메소드들만을 사용하여 코드를 작성할 수 있다. " 라고 책에 나와 있는데... 아직 잘 모르겠습니다... 그러므로 패스~

혼합

모듈은 객체를 생성할 수 없기 때문에 혼합을 통하여 객체를 생성 할 수 있다고 합니다. 혼합을 이용하여 다중 상속을 흉내 낼수 있다고 합니다.

신고
Posted by 초프(초보 프로그래머)
Programming/JAVA2009.03.16 21:33

 클래스 = 구조체 + 함수

클래스를 간단하게 말하자면 저렇게도 말할수있지 않을까 한다. 클래스는 객체이고 객체지향이며 생성자, 소멸자를 포함하고 있으...... 물론 그렇지만 간단하게 얘기하자면 저렇다는 것이다.

클래스에는 구조체처럼 여러타입의 여러개의 변수를 클래스라는 범위안에 넣을수 있다. 그리고 그안에 있는 변수를 자유롭게 접근할수 있는 클래스안의 함수를 매소드(method)라고 한다.

public class Dog{
     public int age;

     public int getAge(){
          return age;
     }
}


위는 아주 간단한 클래스이다. Dog 라는 이름의 클래스이며 int형의 age라는 변수가 있으며 getAge() 라는 메소드가 포함되어있다. getAge는 단순히 age를 리턴하는 메소드이다. 

저 Dog클래스를 사용하기 위해서 다음과 같이 해야한다.
Dog abc = new Dog();

Dog abc는 Dog라는 데이터형의 abc라는 변수를 만든것 뿐이다. 이상태로는 사용할수 없다. 메모리를 생성해줘야 한다.
new Dog()는 Dog를 사용할수있는 메모리를 만들어준다. 이렇게 생성된것을 인스턴스라고 한다.

abc.age = 10;

이와 같이 해주면 age가 10으로 설정된다. 이것은 구조체와 같은 형식이다.
메소드 호출도 위와 비슷하다.

System.out.println(abc.getAge());

이렇게 하면 10 이 콘솔에 출력된다. abc안의 getAge()를 호출하는것이다. getAge()는 같은 클래스에 있는 age변수를 마음대로 사용할수가 있다.

너무 간단하게 이상한 설명만 한것 같지만 이게 알아야할 기본인것 같다. 접근제어, 생성자, 소멸자, 상속, 인터페이스등의 개념이 있지만 이건 기본이라고 보기 힘들지 않을까 -_-;

신고
Posted by 초프(초보 프로그래머)