정처기 : 2023년 2회차 기출, 1️⃣6️⃣~2️⃣0️⃣

m_ngyeong·2024년 4월 21일
0
post-thumbnail

정보처리기사 실기


📝 2023년 2회차 기출, 1️⃣6️⃣~2️⃣0️⃣

16. SQL

<성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자한다.

<성적>

학번과목번호과목이름학점점수
a2001101컴퓨터구조695
a2002101컴퓨터구조684
a2003302데이터베이스589
a2004201인공지능592
a2005302데이터베이스5100
a2006302데이터베이스588
a2007201인공지능593

<결과>

과목이름최소점수최대점수
데이터베이스88100
인공지능9293

⭐️ 조건 :

  • 최소한의 코드로 작성될 수 있는 SQL문을 구성
  • WHERE문은 사용하지 않음
  • GROUP BY와 HAVING을 이용
  • 집계 함수(Aggregation Function)를 사용해여 명령문을 구성
  • '최소점수', '최대점수'는 별칭(Alias)을 위한 AS문을 이용
  • 명령문 마지막의 세미콜론(;)은 생락 가능
  • 인용 부호가 필요한 경우 작은따옴표('')를 사용

🖍 SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90;

17. Java Lang. - 상속

abstract class Vehicle { // 추상클래스 Vehicle을 정의
     String name;
     abstract public String getName(String val); // 추상메소드 getName()을 정의
5️⃣    public String getName() {
6️⃣            return "Vehicle name: " + name;
     }
}
 
class Car extends Vehicle { // 클래스 Car를 정의하고 부모 클래스 Vehicle에 속한 변수가 메소드를 상속받음
     private String name;
2️⃣    public Car(String val) {
3️⃣            name = super.name = val;
     }
 
     public String getName(String val) {
             return "Car name:" + val;
     }
 
     public String getName(byte[] val) {
             return "Car name:" + val;
     }
}

public class HelloWorld {
    public static void main(String[] args) {
1️⃣     Vehicle obj = new Car("Spark");
4️⃣7️⃣    System.out.print(obj.getName());
    }
}

🖍 Vehicle name: Spark
1️⃣ Car 클래스의 생성자를 이용하여 Vehicle 클래스객체 변수 obj를 선언하고, "Spark"를 인수로 Car 클래스의 생성자를 호출.
[부모클래스명][객체변수명] = new [자식클래스생성자()] : 형 변환이 발생하는데, 부모 클래스와 자식 클래스에 동일한 속성이나 메소드가 있으면 자식 클래스의 속성이나 메소드로 재정의됨.
2️⃣ 클래스 Car생성자 Car()의 시작점, val에 "Spark"를 저장.
3️⃣ val의 값 "Spark"를 부모 클래스인 Vehicle 클래스의 변수 nameCar 클래스의 변수 name에 저장. → Car()를 호출했던 다음 줄인 4️⃣으로 이동.
super : 상속 관계에 있는 부모 클래스를 가리키는 예악어
4️⃣ 객체 변수 objgetName() 메소드를 호출.
• 형 변환으로 인해 호출되는 메소드는 Vehicle 클래스getName()메소드. 메소드의 이름이 동일해도 '인수의 자료형의 개수'가 다르면 서로 다른 메소드이기 때문에 Vehicle 클래스Car 클래스getName(String val)이나, Car 클래스getName(byte[] val)가 아님.
5️⃣ getName() 메소드의 시작점.

18. 스키마

① 스키마는 데이터베이스의 전체적인 논리적 구조로, 개체 간의 관계와 제약 조선을 나타내며, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스.
② 스키마는 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄.
③ 스키마는 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것.

🖍 ①개념, ②내부, ③ 외부

19. WhiteBox test - 분기 커버리지

🖍 ①→②→③→④→⑤→⑥→⑦ / ①→②→④→⑤→⑥→①
1번째 테스트 케이스 설계 - ② 조건문에서 Yes, ⑥ 조건문에서 No
2번째 테스트 케이스 설계 - ② 조건문에서 No, ⑥ 조건문에서 Yes

  • 분기 커버리지(Branch Coverage) :
    소스 코드의 모든 조건문에 대해 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행 되도록 테스트 케이스를 설계

20. Java Lang.

class Parent {
    int x = 1000;
    Parent() {
        this(3000);
    }
    Parent(int x) { 
        this.x = x;
    }
}
 
class Child extends Parent {
    int x = 4000;
    Child() {
        this(5000);
    }
    Child(int x) {
        this.x = x;
    }
    int getX(){
        return this.x;
    }
}
 
public class HelloWorld {
    public static void main(String[] args) {
        Child c = new Child();
        System.out.println(c.getX());
    }
}

🖍 5000
1️⃣ Child c = new Child();Child 클래스객체 번수 c를 선언하고, 생성자를 호출. 인수가 없음으로 Child() 구문으로 이동.
2️⃣ this(5000);구문으로 넘어가기 전에, 자식 클래스의 생성자에는 super();와 같이 부모 클래스의 생성자를 호출하는 코드가 묵시적으로 포함되어 있어, Parent()으로 이동.
•••
3️⃣ this(5000)Child(5000)과 동일, 인수를 5000으로 전달하므로 Child(int x)를 호출.
4️⃣ this.x = xChild.x = x와 동일하므로 Child.xx의 값 5000을 저장.
5️⃣ System.out.println(c.getX()); 구문에 의해 c.getX() 메소드를 호출하여 반환받은 값을 출력.

  • Parent()Parent(int x)는 메소드의 이름이 같지만 '인수를 받은 자료형'이 다르므로 서로 다른 메소드이다. 이렇게 이름은 같지만 인수를 받는 자료형이나 개수를 딜리하여 여러 기능을 정의하는 것을 오버로딩(Overloading)이라고 한다.


참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
https://newbt.kr/시험/정보처리기사%20실기/2023년%201회/오소프트0506

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글