2014년 4월 8일 화요일

[Java]다형성(polymorphism)

  1. public class A {
  2.     int x;
  3. }
A Class가 int x 멤버변수를 가지고
  1. public class B extends A{
  2.     int y;
  3. }
B Class가 A Class로부터 멤버를 상속받아 int x, int y를 가지게 될 때 
  1. public class Main {
  2.     A a = (A)new B();
  3.     //a가 참조할 수 있는 멤버(int x)는 b가 다(int x, int y) 가지고 있기 때문에 문제 없다.
  4. }
위와 같이 만들 수 있는데 이를 다형성(polymorphism)이라합니다.

다형성(polymorphism)

다형성이란 단일 대상이 한가지의 기능만 수행하는것이 아니라 상황에 따라 기능을 바꾸어 여러가지

형태를 갖을 수 있는 성질을 의미합니다

객체지향에서 Overriding ,Overloading 을 말하는데 오버라이딩은 상속과 연관되어 부모 클래스에서 

정의된 메소드의 기능을 확장하거나 재정의하는것

오버로딩은 같은 이름의 다양한 파라미터 변수를 가진 메소드들을 정의하여 

여러 형태의 메세지를 단일 행위가 처리 할 수 있도록하는것

2014년 4월 7일 월요일

[Java]getter와 setter를 이용한 캡슐화

  1. public class Pay {
  2.     private int rate; //시간당 단가
  3.     public Pay(){
  4.         this.rate = 5000;
  5.     }
  6.     //시간당 급여를 지불하는 메서드
  7.     public int sendPay(int hour){
  8.         return hour*rate;
  9.     }
  10.     //읽기 가능한 get 추가
  11.     public int getRate() {
  12.         return this.rate;
  13.     }
  14.     //쓰기 가능한 set 추가
  15.     public void setRate(int rate) {
  16.         this.rate = rate;
  17.     }
  18. }
멤버변수 public int rate 일때에는 사용자의 실수로 인해 rate값이 바뀌게되면 오류가 생길수 있다.
이런 값에 접근제한을 두고자 멤버변수에 private를 사용하여 제한을 두고 
gettersetter를 사용하여 필요에 따라 수정하도록 사용할 수 있게 
캡슐화를 하도록 한다.

[Java]상속(extends),포함,오버라이딩(overriding)


  • 상속, 포함

코드의 중복으로 오류가 생기는걸 줄이고자 Class를 재활용
부모클래스를 자식클래스가 상속받으면 부모클래스에서 정의한 변수나 메서드가 상속된다
따라서 자식클래스는 부모클래스에서 정의된 변수나 메서드를 자기 자신것처럼 사용 할 수 있다.

  • 언제 사용하나?
Java는 다중 상속이 안되므로 둘 다 사용 가능할 때에는 포함을 사용

~는 ~ 이다. - 상속
~는 ~ 을 가진다. - 포함

예)
버스는 자동차다. - 상속
자동차는 엔진을 가진다. - 포함


  • 오버라이딩
부모로 부터 상속받은 메소드를 자식클래스에서 자기 자신클래스 기능에 적합하게 재정의 하는것을 말한다.

  • super와 super()
this는 자기 자신 객체를 가리키는 레퍼런스 변수인 반면 super는 부모 객체를 가리키는 레퍼런스 변수이다. this()가 자기 자신클래스의 다른 생성자를 호출하는 역할을 하는 예약어라면 super()부모 클래스의 생성자를 호출하는 역할을 한다.

2014년 4월 3일 목요일

[DB]데이터 베이스의 논리 설계 - 간단 개념


  • 데이터 모델링이란 
업무에 필요한 데이터를 시스템 구축방법론을 사용해 분석 설계하여 정보화시스템을 구축하는것이다.
  • 엔티티 타입이란 

업무에 필요하고 유용한 정보를 저장하고 관리하기 위한것으로 영속적으로 존재하는 단위로 두개 이상의 엔티티를 가진다.

  • 속성이란 

업무에 필요한 엔티티에서 관리하고자 하는 더이상 분리되지 않는 최소의 데이터 단위로 속성정보 한개 이상을 가진다.

  • 유일한 식별자란 

엔티티타입의 대표성을 나타는 유일한 식별자로 주식별자는 엔티티타입 하나에 한개만 가질수 있다.

  • 엔티티타입을 명명하는 일반적인 기준 

현업에서 사용하는 언어 사용, 약어 사용x, 단수명사 사용, 유일성, 생성의미에따라 

  • 속성의 분류 

업무로 부터 추출한 기본속성, 규칙화를 위한 설계속성, 타 속성의 영향에 의해 생성되는 파생속성

  • 관계의 개념 

엔티티와 엔티티 사이의 논리적인 관계, 형태나 행위로 서로에게 영향을 미치는 것

  • 서브젝트 에어리어란 

해당업무 내에서 연관이 많은 엔티티타입을 그룹으로 묶어 표시하는 개념

  • 정규화란 

다양한 유형의 검사를 통해 데이터 모델을 좀더 구조화하고 개선시켜 나가는 절자에 관련된 이론으로 하나의 테이블에 중복된 데이터가 없도록하는것이 기본 원칙이다.

  • 이상현상이란 

무엇이며,이상현상에는 어떤것들이 있는가? 반복되는 속성으로 인해 일부속성이 중복된다면 입력, 수정, 삭제의 경우에 데이터를 제대로 관리할수 없다.

  • 1정규화란 

복수의 속성값을 가진 속성을 분리. 테이블 하나의 컬럼에는 여러개의 데이터값이 중복되어 나타나지 않아야 한다는 것

  • 2정규화란 

주식별자에 종속적이지 않고 주식별자를 구성하는 일부 속성에 종속적인 속성을 분리하는 것

  • 3정규화란 

속성에 종속적인 속성을 분리하는 것

  • ERD란 

각각 업무 분석에서 도출된 엔티티타입과 엔티티타입간의 관계를 이해하기 쉽게 그림으로 표시하는 방법

2014년 4월 1일 화요일

[파밍,뱅커]치료방법 링크

http://m.cafe.naver.com/malzero/94542

yessign 사칭 파밍 및 뱅커 제거방법 링크주소입니다.

[Java]생성자 메서드의 초기화

  1. public class Car {
  2.     String name; //자동차 객체의 이름
  3.     boolean power; // 시동 상태
  4.     int tire; //자동차  타이어 갯수
  5. }  
Car 클래스가 있고
  1. public class CarTest {
  2.     public static void main(String[] args){
  3.         Car c1 = new Car();
  4.        
  5.         System.out.println(c1.tire);
  6.     }
  7. }
CarTest 클래스가 있을때에 c1.tire의 값이 없음에도 실행되는 이유는
클래스가 생성되면서 생성자 메서드가 초기화 되기때문입니다.
  1. Car(){
  2.     this.name = null;
  3.     this.power = false;
  4.     this.tire = 0;
  5. } //생성자 메서드
메모리에는 code영역 stack영역 heap영역이 존재합니다.
처음에 stack영역에 Car c1이라는 변수가 만들어지고 heap영역에는 new Car()라는 생성자 메서드가 저장됩니다. Car c1 = new Car(); //c1에 new Car가 대입되는게 아닌 new Car의 위치를 가르키는 주소 또는 참조값을 지칭합니다.

[Java]public void와 public int

  1. public class Calculator {
  2.     //1.a~b까지 한줄에 하나씩 입력
  3.     public void toForm1(int a, int b){
  4.         if(a>b){
  5.         }
  6.         for(int i=a; i<=b; i++){
  7.             System.out.println(i);
  8.         }
  9.     }
public void 사용
  1. //2.입력받은  a~b까지수 홀수의 합
  2.     public int toForm5(int a, int b){
  3.         if(a>b){
  4.             return 0;
  5.         }
  6.         int z = 0;
  7.         for(int i=a; i<=b; i++){
  8.             if(i%2 == 1){
  9.                 z += i;
  10.             }
  11.         }
  12.         return z;
  13.     }
public int 사용

  1. public class CalculatorTest {
  2.     public static void main(String[] args){
  3.         Calculator Cal = new Calculator();
  4.        
  5.        
  6.         /*Cal.toForm1(1, 10);   void사용*/
  7.        
  8.        
  9.         /*int q = Cal.toForm2(1, 10);   int사용
  10.         System.out.println(q);*/
  11.     }
  12. }
  13.