火男::單純槪念 [ 단순개념 ]

상속이라는 것은 객체지향적인 프로그래밍에서 매우 중요한 위치를 차지하고 있다.

일반적으로는 상속을 할 때 public 상속을 많이 사용하는데, 다음 예를 통해 상속 및 접근 권한에

대해 생각해 보자.


class Dad
{
private:
    void WearPanties();

protected:
    void CarDrive();

public:
    void WatchTV();
};


class Son1 : private Dad
{
};


class Son2 : protected Dad
{
};


class Son3 : public Dad
{
};


void main( void )
{
    Son1 son1;
    Son2 son2;
    Son3 son3;


    son1.WearPanties();     // error, private
    son1.CarDrive();          // error, private
    son1.WatchTV();          // error, private
   
    son2.WearPanties();     // error, private
    son2.CarDrive();          // error, protected
    son2.WatchTV();          // error, protected

 

    son3.WearPanties();     // error, private
    son3.CarDrive();          // error, protected
    son3.WatchTV();          // OK   , public
}


위 코드를 보면 마지막의 son3.WatchTV()만 호출이 성공됨을 알 수 있는데, 그 이유는 다음과 같다.


부모 클래스의 속성

상속 속성

상속 시 속성

private

private

private

private

protected

private

private

public

private

protected

private

private

protected

protected

protected

protected

public

protected

public

private

private

public

protected

protected

public

public

public


위 표와 같이 private를 어떤 속성으로 상속하든 결과는 private가 되며,

protectec는 상속되는 속성에 따라 private 또는 protected가 된다.

그리고 public 또한 상속되는 속성에 따라 private, protected, public이 됨을 알 수 있다.

이는 마치 교집합과 같은 성질을 갖는데, 대충 다음과 같이 범위를 표현할 수 있다.


private << protected << public


private는 범위가 가장 작기 때문에, 어떤 속성을 만나던 private가 될 수 밖에 없다.

각자가 위 속성에 대해서 교집합을 만들어 보면 상속 시 어떤 속성으로 변하는지 쉽게 파악이

될 것이다.


앞으로 우리가 MFC로 코딩을 하다 보면 대부분의 상속은 public 상속임을 알 수 있는데,

그렇다면 위 표에서 public으로 상속하는 3가지 경우만 잘 알면 될 것이다.


추가로 private, protected, public에 대해서 다음 표를 갖고 설명해 보면,


Base

클래스속성

클래스내에서

접근

객체에서

접근

상속받은 파생

클래스내에서 접근

상속받은

객체에서 접근

private

가능

불가능

불가능

불가능

protected

가능

불가능

가능

불가능

public

가능

가능

가능

가능


private 멤버는 의미 그대로 아주 사적인 멤버이다. 사적인 멤버이기 때문에 현재 클래스에서만

사용하고 상속조차 해주지 않는다. 아빠가 아들한테 상속해 주지 않는 것.. 머 속옷 같은거..ㅋㅋ


protected 멤버는 현재 객체만 놓고 보면, private 멤버와 다를 바 없다. 하지만 상속을 할 때는

private와 다르게 작용한다. 아빠의 차가 있는데, 이 차를 아들한테 상속해 주고 싶다.

차는 보통 남한테 잘 빌려주지 않으니까 private나 protected로 해야 하는데, private일 경우에

아들한테 차를 상속해주면 아들은 차를 탈 수가 없다. 그러므로 차를 protected로 만들어 놓고

상속을 해주면, 아들만 탈 수 있는 것이 되는 것이다. 아들은 이 차를 빌려줄 수 있을까?

빌려 줄 수 없다. 객체의 외부에서는 접근할 수 없기 때문이다.


public 멤버는 현재 객체만 사용하든 상속을 하든 아무 관계가 없다. 그냥 아무나 쓰면 되고,

아들한테 상속해 주면 아들도 쓰고, 아들이 친구한테도 빌려주고 그럴 수 있는 멤버들이다.

예를 들어 아버지가 책이 한 권 있고, 아들한테 상속해주고, 아들은 또 친구한테 줄 수 있는

그런 존재가 public이다.

Posted by □□[RMM]□□
槪念2. - 자바이야기 l 2008/01/14 16:37

EDIT(편집)

Content Assist(컨텐트 지원)                              Ctil + Space
Context Information (매개변수 힌트)                    Ctil + Shift + Space
Find and Repalce (찾기/바꾸기)                        Ctrl + F
Find Next (다음 찾기)                                       Ctrl + K
Find Previous (이전 찾기)                                 Ctrl + Shift + K
Incremental Find (다음 증분 찾기)                      Ctrl + J
Incremental Find Reverse (이전 증분 찾기)          Ctrl + Shift + J
Quict Diff Toggle                                              Ctrl + Shift + Q
Quick Fix (빠른 수정)                                        Ctrl + 1
Redo (다시 실행)                                             Ctrl + Y
Restore Last Selection (마지막 선택사항 복원)     Alt + Shift + Down
Select Enclosing Element (엔클로징 요소)           Alt + Shift + UP
Select Next Element (다음 요소)                         Alt + Shift + Right
Select Previous Element (이전 요소)                   Alt + Shift + Left
Show Tooltip Description (도구 팁 설명 표시)       F2
Toggle Insert Mode(스마트 삽입 모드)                 Ctrl + Shift + Insert

File(파일)

Close (닫기)                                                     Ctrl+W or Ctrl + F4
Close All (모두 닫기)                                         Ctrl + Shift + W or Ctrl + Shift +F4
Exit (종료)                                                        Alt + F4
New (신규(기타))                                              Ctrl + N
New menu (신규)                                              Alt + Shift + N
print (인쇄)                                                       Ctrl + P
Properties (특성)                                               Alt + Enter
Refresh (새로 고치기)                                         F5
Rename (이름 바꾸기)                                         F2
Save All (모두 저장)                                           Ctrl + Shift + S

Navigate (탐색)
Backward History (뒤로)                                      Alt + Left
Forward History (앞으로)                                      Alt + Right
Go to Line (행으로 이동)                                      Ctrl + L
Go to Matching Bracket (일치하는 대괄호)              Ctrl + Shift + P
Go to Next Member (이전 구성원)                          Ctrl + Shift + Down
Go to Previous Member (일치하는 대괄호)              Ctrl + Shift + Up
Last Edit Location (마지막 편집 위치)                     Ctrl + Q
Next (다음 어노테이션)                                         Ctrl + .
Open Call Hierarchy (호출 계층 구조 열기)              Ctrl + Alt + H
Open Declaration (선언 열기)                                F3
Open External Javadoc (외부 Javadoc 열기)           Shift + F2
Open Resource (자원 열기)                                  Ctrl + Shift + R
Open Structure (상위구현 열기)                             Ctrl + F3
Open Type (유형 계층 구조 열기)                           F4
Open Type Hierarchy                                           Ctrl + Shift + H
Previous (이전 어노테이션)                                   Ctrl + ,
Quick Hierarchy (빠른 유형 계층 구조)                    Ctrl + T
Quick Outline (빠른 아웃 라인)                               Ctrl + O

Project (프로젝트)

Build All (모두 빌드)                                             Ctrl + B

Refactor - Java(리펙터)

Change Method Signature (메소드 서명 변경)           Alt + Shift + C
Convert Local Variable to Field (이동)                      Alt + Shift + F
Extract Local Variable (로컬 변수 추출)                    Alt + Shift + L
Extract Method (메소드 추출)                                  Alt + Shift + M
Inline (인라인)                                                      Alt + Shift + I
Move - Refactoring (이동)                                     Alt + Shift + V
Redo - Refactoring (다시 실행)                               Alt + Shift + Y
Refactor Quick Menu                                            Alt + Shift + T
Rename - Refactoring (이름 바꾸기)                       Alt + Shift + R
Undo - Refactoring (실행 취소)                              Alt + Shift + Z

Run (실행)
Debug Last Launched (마지막 실행 디버그)            F11
Display (표시)                                                     Ctrl + Shift + D
Execute (실행)                                                    Ctrl + U
Inspect (검사)                                                     Ctrl + Shift + I
Resume                                                              F8
Run Last Launched (마지막 실행 재실행)                Ctrl + F11
Run to Line                                                         Ctrl + R
Step Into                                                             F5
Step Into Selection                                               Ctrl + F5
Step Over                                                            F6
Step Return                                                          F7
Toggle Breakpoint                                                 Ctrl + Shift + B
Toggle Step Filters                                                Shift + F5

Search (검색)
Declatation in Workspace (선언 > 작업공간)             Ctrl + G
Occurrences in File (파일에서 발생)                        Ctrl + Shift + U
Open Search Dialog (검색)                                     Ctrl + H
References in Workspace  (참조 > 작업공간)            Ctrl + Shift + G

Source
Toggle Comment (주석 토글)                                   Ctrl + Shift + C or Ctrl + /
Add Block Comment (블록 주석 추가)                       Ctrl + Shift + /
Remove Block Comment (블록 주석 제거)                  Ctrl + Shift + \
Add Import (가져오기 추가)                                      Ctrl + Shift + M
Add Javadoc Comment (Javadoc 주석 추가)              Alt + Shift + J
Format (형식화)                                                      Ctrl + Shift + F
Indent Line (들어쓰기 정정)                                      Ctrl + I
Mark Occurences                                                   Alt + Shift + O
Organize Imports (가져오기 체계화)                           Ctrl + Shift + O
Remove Occurrence Annotations                               Alt + Shift + U
Source Quick Menu                                                 Alt + Shift + S

Text Editing
Collapse                                                                 Ctrl + Numpad -
Copy Lines                                                              Ctrl + Alt + Down
Delete Line                                                              Ctrl + D
Delete Next Word                                                      Ctrl + Delete
Delete Previous Word                                                Ctrl + Backspace
Duplicate Lines                                                        Ctrl + Alt + Up
Expand                                                                   Ctrl + Numpad +
Expand All                                                               Ctrl + Numpad *
Insert Line Below Current Line                                   Ctrl + Shift + Enter
Insert Line Below Current Line                                   Shift + Enter
Move Lines Down                                                    Alt + Down
Move Lines Up                                                         Alt + UP
Next Word                                                                Ctrl + Right
Previous Word                                                          Ctrl + Left
Scroll Line Down                                                      Ctrl + Down
Scroll Line Up                                                          Ctrl + Up
Select Next Word                                                      Ctrl + Shift + Right
Select Previous Word                                                Ctrl + Shift + Left
Toggle Folding                                                         Ctrl + Numpad /
Toggle Overwrite                                                       Insert
To Lower Case                                                        Ctrl + Shift + Y
To Upper Case                                                         Ctrl + Shift + X
Views
Java Package Explorer                                              Alt + Shift + Q, P
java Type Hierarchy                                                   Alt + Shift + Q, T
Outline                                                                     Alt + Shift + Q, O
Problems                                                                  Alt + Shift + Q, X
Search                                                                     Alt + Shift + Q, S
Synchronize                                                              Alt + Shift + Q, Y

Window
Activate Editor (탐색 > 편집기 활성화)                            F12
Maximize Active View or Editor (탐색 > 활성화된 보기 또는 편집기 최대화)           Ctrl + M
Next Editor (탐색 > 다음 편집기)                                    Ctrl + F6
Next Perspective (탐색 > 다음 Perspective)                    Ctrl + F8
Next View (탐색 > 다음 보기)                                        Ctrl + F7
Open Editor Drop Down (탐색 > 편집기로 전환)               Ctrl + E
Previous Editor (탐색 > 이전 편집기)                              Ctrl + Shift + F6
Previous Perspective (탐색 > 이전 perspective)              Ctrl + Shift + F8
Previous View (탐색 > 이전 보기)                                  Ctrl + Shift + F7
Show Ruler Context Menu                                            Ctrl + F10
Show System Menu (탐색 > 시스템 메뉴 표시)                 Alt + -
Show View Menu                                                        Ctrl + F10
Switch to Editor                                                           Ctrl + Shift + E


Posted by □□[RMM]□□
槪念2. - 자바이야기 l 2007/12/11 10:05
//****************************************
//*FunctionName:소숫점 실수만 출력         
//*Write By         : RMM
//*Write Date       : 2007.11.21
//****************************************

function fn_castfloat(OriString) {
 var v_float_old = "";
 var v_float = "";
 var rBoolean  = true;
 for(var yni = OriString.length(); 0 < yni ; yni--) {
  var v_float_chk = SubStr(OriString,yni,1);
  if(v_float_chk == '.') {
   yni = -1;
  } else {
   v_float_old += v_float_chk;
  }
 }
 
 for(var zni = v_float_old.length() ; 0 <= zni ; zni--) {
  v_float += SubStr(v_float_old,zni,1);
 }
 
 return v_float;
}
Posted by □□[RMM]□□
槪念2. - 자바이야기 l 2007/11/21 10:16

자바코드를 울트라에디트상에서 컴파일/실행하기

제목에서 자바코드라고 했지만, 명령행 인터페이스를 제공하는 다른 언어에도 적용할 수 있다.
도스창(프롬프트창)에서 JDK를 이용한 Hello.java 파일의 컴파일/실행한 전형적인 예이다.

C:\temp>type Hello.java
class Hello
{
        public static void main(String args[])
        {
                System.out.println("Hello");
        }
}
C:\temp>javac Hello.java
명령 또는 파일 이름이 올바르지 않습니다

C:\temp>C:\J2SDK1~1.1_0\BIN\JAVAC.EXE Hello.java

C:\temp>C:\J2SDK1~1.1_0\BIN\JAVA.EXE Hello
Hello

C:\temp>


그럼 이것을 울트라에디트자체에서 바로 컴파일/실행할 수 있게끔 해보자.
참고로, 울트라에디트 9.20b(한글판)에서 설정했다.
메뉴에서 고급 - 도구 설정 을 선택한다. 아래와 같이 설정한다.

Command Line: C:\j2sdk1.4.1_01\bin\javac.exe %f
Working Directory: %p
Menu Item Name: 자바소스컴파일
Save Active File: 체크
Output to List Box: 체크
Capture Output: 체크

위와 같이 하고난뒤, 삽입버튼을 클릭하여 설정을 등록하고 확인을 눌러 저장한다.
JDK가 설치된 디렉토리와 작업디렉토리는 자신의 환경에 맞게 적절히 변경해 주길 바란다.

위에서 자바코드를 컴파일하는 것을 등록했고 이제 실행하는 부분을 등록하자.
메뉴에서 고급 - 도구 설정 을 선택한다. 아래와 같이 설정한다.

Command Line: C:\j2sdk1.4.1_01\bin\java.exe -cp %p "%n"
Working Directory: %p
Menu Item Name: 자바클래스실행
Save Active File: 체크
Output to List Box: 체크
Capture Output: 체크


이와 같이 하고 난뒤, Hello.java를 울트라에디트로 연다.
컴파일 / 실행은 다음과 같이 할 수 있다.

컴파일: Ctrl + Shift + 0
실행: Ctrl + Shift + 1

0,1는 메뉴아이템이 명령목록상자에서 등록된 순서를 의미한다.
즉, 메뉴아이템 '자바소스컴파일'이 명령목록상자의 제일 위에 존재하고, 메뉴아이템 '자바클래스실행' 이 그 다음에 위치하므로 0, 1의 번호를 가지게 된다.

간단하게나마 자바IDE인 것처럼 좀 더 편하게 작업할 수 있을 것이다.

PS>
명령줄 옵션으로 사용된 것을 설명하며 다음과 같다.
대문자는 8.3형식의 도스파일형식으로 표현되고, 소문자로 사용하면 long filename형식으로 사용할 수 있다.
자바코드의 이름은 도스파일형식을 벗어나는 경우가 많으므로 되도록 소문자로 사용하는 것이 좋을 것이다.
%P        경로명 ("C:\temp\")
%N        파일명 ("Hello")
%E        확장자 (".java")
%F        %P%N%E와 동일("C:\temp\Hello.java")

<!--"<-->
Posted by □□[RMM]□□
槪念2. - 자바이야기 l 2007/11/01 16:45
1 

카테고리

전체 (27)
槪念1. - 일상이야기 (21)
槪念2. - 자바이야기 (4)
槪念3. - D B 이야기 (1)

달력

«   2008/07   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
tistory!get rss Tistory Tistory 가입하기!