LANGUAGE/JAVA
-
객체지향 SOLID 원칙LANGUAGE/JAVA 2014. 10. 10. 17:56
1. SRP(Single Responsibility Principle) 단일 책임 원칙 객체로 정의한 대상은 하나의 책임만 가지도록 해야한다는 원칙. 더 뺄 것도 더할것도 없는 상태로 만들어 주는 것. (단일 객체의 변경 사항으로 인해 그와 관계 없는 부분에서 수정이 불가피해지거나 연관성 없는 부분까지 고려해야하는 상황이 발생하지 않도록) 2. OCP(Open Closed Principle) 개방 폐쇄 원칙 확장에는 열려있고 수정에는 닫혀있는 구조로 설계되거나 프로그래밍 되어야한다는 원칙. 객체의 본래 의미는 변하지 않도록 하면서 변경이나 추가가 필요한 경우에는 언제든지 확장을 통해 기존 기능이나 이름을 재사용할 수 있도록 하는 것이다. (추가적인 기능이나 변경사항에 수정해서 사용하도록 하는 것이 아니라..
-
-
java primitive data type + 연산자LANGUAGE/JAVA 2014. 6. 19. 15:48
long 형에 int형의 범위를 넘는 값을 입력할 경우 L을 붙여 주지 않으면 에러가 발생한다. (The Literal 9223372036854775807 of type int is out of range) 실수는 d 식별자가 없으면 double형으로 인식한다. float 형에만 강제로 f를 붙여 주어야 함. Data Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html] 변..
-
[JAVA] JVM 메모리 구조LANGUAGE/JAVA 2014. 4. 24. 15:00
JVM에서 실행되는 모든 프로그램들(스레드)들은 메소드 영역과 힙 영역을 공유하게 된다. 메소드 영역은 클래스 내의 메소드에 해당하는 바이트코드와 클래스 변수 등이 저장되는 영역이며, 힙영역은 프로그램의 실행 중에 생성된 객체를 저장하게 된다. 스택영역은 각각의 스레드가 수행되면서 실행하고 있는 메소드의 호출 상태를 저장하며, 여러개의 스레드가 수행되는 경우 다수개의 스택 프레임으로 구성될 수 있다. 메소드 영역 자바 프로그램을 구성하고 있는 메소드와 클래스 변수(static으로 선언된 변수)를 저장하기 위한 공간이다. JVM은 복수개의 스레드가 메소드를 정상적으로 사용하기 위한 동기화 기법을 제공한다 힙 영역 프로그램 상에서 데이터를 저장하기 위해 동적으로(실행시간에) 할당하여 쓸 수 있는 메모리 영역..
-
[JAVA] 오버로딩, 오버라이딩LANGUAGE/JAVA 2014. 4. 14. 17:50
오버로딩(다형성 구현) 하나의 클래스에 같은 이름의 메소드들을 여러 가지 형태로 정의하는 것 메소드 선언부의 반환형과 메소드 이름은 반드시 같아야한다. 매게변수의 개수나 데이터형이 반드시 달라야 한다. 장점 1 : 오버로딩된 메소드는 편리하다. 오버로딩된 메소드들이 있다면 형변환 해서 사용하지 않아도 된다. 장점 2 : 클래스에서 메소드 이름을 절약할 수 있다. 오버로딩이 없다면 같은 기능을 하더라도 메소드 이름을 중복해서 선언할 수 없으므로 메소드 이름이 복잡해질 수 밖에 없다. -------------------------------- 오버라이딩 상속 관계에 있는 자식 클래스에서 상복받은 자원을 재정의하는 것 오버라이딩은 자식 클래스에서만 적용 가능하다. 오버라이딩하고자 하는 메소드의 선언부를 그대로..
-
[JAVA] 상속LANGUAGE/JAVA 2014. 4. 14. 16:30
예시 부모 : Person (속성 - age, name , 메소드 : getInfo()) 자식 : Doctor, Nurse, Patient 장점 1 : 코드를 재활용함으로써 간소화된 클래스 구조 상속을 하지 않을 시 Doctor, Nurse, Patient에 모두 getInfo()와 age, name속성을 코딩해줘야 한다. 장점 2 : 클래스의 기능 테스트에 대한 생산성 및 정확성 증가 상속 기법을 사용하지 않을시 3개의 클래스에서 각각의 getInfo() 메소드를 3번 검사해야 한다. 하지만 상속 기법을 사용하면 Person클래스의 getInfo() 메소드 하나만 테스타하면 된다. 장점 3 : 클래스의 수정/추가에 대한 유연성 및 확장성 증가 getInfo() 메소드의 로직을 변경해야 할 상황이 생겼을..