정보처리기사 실기 공부 day6, 프로그래밍 언어 활용
주의할 것 정리
C
- for 반복문에서 i, j의 위치
 - switch 문에서 break 없으면 다음 case로 넘어감
 - switch 문에서 하드코딩된 case (ex: switch(3) … case 3: … )
 
Python
- 파이썬 슬라이싱, range는 앞 인덱스 포함, 뒤 인덱스 미포함
 - 파이썬 자료형
    
- [] : 배열, {} : 세트(중복X, 순서X) 혹은 딕셔너리(키-밸류), () : 튜플(값 변경X)
 
 - 파이썬 
insert(i, elem)=> i 인덱스에 elem 집어넣음. 원래 i인덱스에 있던 애는 i+1인덱스로 밀려남. - a가 배열일 때, print(a[1:4]) 인 경우, 배열 형식으로 출력됨. ex) [‘B’, ‘C’, ‘D’]
 - 클래스 멤버 함수의 첫 번째 인자로 ‘self’ 들어감 => 없으면 객체 생성 없이도 사용할 수 있는 함수로 선언됨.
 
JAVA
- JAVA 상속 관련…
    
- 상위 클래스에선 하위 클래스의 메서드나 값에 접근 X, 상위 클래스를 상속받는 하위 클래스는 상위 클래스의 메서드나 값에 접근 O
 - 클래스 생성시 객체의 타입과 생성되는 객체는 다를 수 있다.
        
class Parent { void show() { System.out.printIn("Parent"); } } class Child extends Parent { void show() { System.out.printIn("Child"); } } public void main() { Parent pa = new Child(); pa.show() // pa 의 타입은 Parent지만, Child 객체를 생성했으므로 Child 객체의 show() 실행 - super(10); => 상위 객체의 생성자에 10을 넣어서 활용. 상위 객체에 접근할 때 
super사용함! 
 - static String check(int n) {…} : 변수/메서드 앞에 
static이 붙으면 객체 생성 없이도 사용할 수 있음! - JAVA - interface - implements
 - 클래스 관련 내용들 정리
 
클래스
개념
객체지향 프로그래밍에서 객체를 정의하는 틀로, 변수와 메서드를 가진다. 정보처리기사에서 나오는 프로그래밍 언어 중 JAVA, C++, Python에서 사용할 수 있다.
접근 제어자
- public : 모든 클래스에서 접근 가능
 - private : 해당 클래스에서만 접근 가능
 - protected : 해당 클래스와 상속받은 하위 클래스에서 접근 가능
 - default : 같은 패키지 안에서 접근 가능
 
클래스 사용
정의
C++
class ClassName {
private:
    int a;
public:
    int func(void) {
        cout << "function" << endl;
        return 1;
    }
}
JAVA
public class ClassName {
    private int a;
    public int func(void) {
        System.out.printIn("function");
        return 1;
    }
};
Python
class ClassName:
    def function(self):
        print("function")
        return 1
선언
C++
void main() {
    ClassName a;
    ClassName *b = new ClassName();
    a.function();
    b->function();
    delete b;
}
JAVA
public static void main(String[] args) {
    ClassName a = new ClassName();
    a.function();
}
Python
a = ClassName()
a.function()
자기 자신 참조
- C++, JAVA : this
    
- C++ : this -> 변수;
 - JAVA : this.변수;
 
 - python : self
    
- self.변수
 
 
생성자(Constructor)
개념
클래스 객체가 생성될 때 자동으로 호출되는 메서드로, 초기화할 때 사용함.
소멸자(Destructor)
개념
생성자의 반대로, 객체를 제거할 때 사용되는 메서드.
생성자, 소멸자 구현
C++
class A {
public:
    A(int a) {
        cout << "construct" << endl;
    };
    ~A() {
        cout << "destruct" << endl;
    };
};
JAVA
public class A {
    public A(int a) {
        System.out.printIn("construct");
    };
    public void finalize() {
        System.out.printIn("destruct");
    };
}
Python
class A:
    def __init__(self):
        print("construct")
    def __del__(self):
        print("destruct")
상속(Inheritance)
개념
한 객체의 속성(변수, 메서드 등)을 다른 객체가 물려받는 것.
C++
class A {
	...
};
// 상속
class B : public A {
	...
};
JAVA
public class A {
	...
}
// 상속
public class B extends A {
	...
}
Python
class A:
	...
# 상속
class B(A):
	...
오버로딩(Overloading)
- 같은 이름의 메서드를 여러 개 정의할 수 있는 기능. 매개변수의 개수가 다르거나, 같다면 타입이 다른 여러 메서드를 정의할 수 있다.
 - 파이썬은 오버로딩 기능이 없다.
 
오버라이딩(Overriding)
- 상위 클래스의 메서드를 하위 클래스에서 재정의할 수 있는 기능.
 - C++ : 
virtual키워드 사용 - 메서드 이름, 매개변수의 개수, 타입, 반환형 등 메서드에 대한 모든 정보가 같아야 한다.
 
상위 클래스 접근
- C++ : 콜론 두 번(
::) - JAVA, Python : 
super 
C++
class A { ... };
class B : public A {
    A::function();
};
JAVA
public class A { ... }
public class B extends A {
    super.function();
}
Python
class A : ...
class B(A) :
    super().function()
추상 클래스
- 구현되지 않은 메서드로, 하위 클래스에서 구현하도록 강제하는 기능이다.
 
C++
class ClassName {
public:
    virtual int function()=0;
};
JAVA
abstract class ClassName {
    abstract int function();
}
Python
class ClassName:
    def function(self):
        pass
인터페이스
- JAVA에서만 사용. 다형성 극대화, 유지보수성 높임.
 - 일종의 추상클래스로, 추상 메서드와 상수를 멤버로 가짐.
 - 구현된 것은 없는 일종의 설계도.
 
JAVA
interface ClassName {
    void function();
}
class A extends ClassName {
    public void function() {
        System.out.printIn("Hello");
    }
}
참고
수제비 2021 정보처리기사 실기
      
      
댓글남기기