2019-2020-1 학기 20192419 "사이버 보안 전문가에 대한 소개,"학습의 네 번째 주 요약 (노트를 읽고)

추상 데이터 타입과 서브 프로그램의 장 VIII

8.1 추상 데이터 유형

추상 데이터 유형은 속성 (데이터 및 운영) 특정 컨테이너와 명확하게 구분합니다.
응용 계층은 해당 데이터의 특정이다. 논리 계층은 데이터 값 및 추상도 그 처리 동작이다. 클리어 층 구조의 데이터 항목을 저장하도록 구현하고, 데이터 인코딩 동작은 프로그래밍 언어를 사용하여 도시된다. 이 층은 관련 데이터 구조 복합체의 데이터 필드의 추상 데이터 유형을 달성하기 위해, 즉.

  • 컨테이너 : 기억 목적 및 동작의 다른 목적.

    8.2 스택

    추상 스택과 큐는 복합 구조입니다.

  • 스택 : 추상 복합 구조, 요소 만 적층 체의 한쪽 단부로부터 접근 될 수있다. 요소는 처음에 삽입 할 수 있습니다, 또는 당신은 첫 번째 요소를 삭제할 수 있습니다.
    회계사, 즉 약어 LIFO, LIFO를 호출합니다. 삭제 된 항목 인수에 액세스 할 수있는 스택의 동작을 설명하는 또 다른 방법은 항상 프로젝트의 짧은 스택입니다.

    8.3 큐

    추상적 큐는 서로에 내놓았다 큐 아이템의 일단에서, 구조체의 일종이다. 회계사라는
    FIFO, 즉 FIFO의 약어. 큐 인수에 설명 된 또 다른 액세스 동작은 항상 큐 가장 긴 프로젝트에서 삭제됩니다.

    8.4 목록

    세 가지 속성 목록 특성이 있습니다 동형 프로젝트는이 프로젝트는 선형, 가변 길이 목록입니다.
    선형 : 마지막 하나는 그 후 독특한 부분이 제외하고 각 프로젝트는, 그 전에 첫 번째 부분에 고유 한 추가 있습니다.
    일반적으로 저장되는 프로젝트 목록에서 보고서 항목의 수를 검색, 항목을 삭제 삽입 체 프로젝트 작업의 목록을 제공합니다.
    * 잘못된 배열을 나열하지 말고, 배열이 내장되어 구조는 목록 추상적 인 구조입니다. 그러나리스트는 어레이에 사용.
    리스트는 또한로서 시각화 할 수있는 사슬 구조 의 사슬 구조는 노드의 개념에 기초한다. 데이터와 사용자 또는 링크의 다음 노드 포인터 지점의 목록 : 노드는 두 부분으로 구성되어 있습니다.
  • 연쇄 구조 : 데이터 입력과 동일한 용기를 얻을 수있는 위치 결정 방법에 저장된 정보를 문의.

    8.5 트리

    이 계층 구조는 수 체계를했다.

    8.5.1 이진 트리

    이진 트리 추상 구조, 각 노드는 다른 두 후속 노드라는 아이를 가질 수 있습니다. 머리가 트리의 시작 노드, 자식 노드없는 루트를 호출됩니다. 왼쪽에있는 노드의 아이가있는 경우 자식 노드라고 왼쪽 아이 . 존재의 오른쪽 노드의 자식 노드 경우, 자식 노드가 호출 될 권리 아이 . 노드가 아이를 가질하지 않는 경우,이 리프 노드라고합니다.

  • 리프 노드 : 자식 트리 노드.

루트 노드뿐만 아니라, 각각의 노드는 하나의 부모 노드가 있습니다. 트리의 각 노드는 하위 트리의 루트로 볼 수 있습니다. 노드가 다른 노드 또는 다른 노드의 조상의 부모의 부모 인 경우, 전자는 후자의 조상이다.

8.5.2 이진 검색 트리

의미 론적 속성 이진 검색 트리, 즉, 노드의 값의 오른쪽 서브 트리에있는 모든 노드에 비해 자사의 왼쪽 하위 트리에있는 모든 노드의 값보다 더 큰, 덜해야 더 노드 트리의 값을 특성화하기 값.

이진 검색 트리 검색

노드에 현재 위치가 (현재) 다음 정보는이 노드의 사용자 데이터를 참조하는 경우, 현재의 오른쪽 서브 트리 현재, 오른쪽 (현재의) 점의 왼쪽 서브 트리의 루트에 (현재의) 점을 왼쪽 루트 노드. 널 (null)은 null로 그 포인터를 나타내는 특수한 값입니다. 포인터가 null의 경우 따라서, 다음 하위 트리가 비어 있습니다.

그림 8.6

  • 도 : 노드 집합 및 이들 에지의 데이터 구조를 상호 접속 노드 세트.
  • 정점 : 그래프의 노드.
  • 에지 (아크) : 그림의 정점은 두 개의 연결된 노드를 나타냅니다.
  • 무향 그래프 없음 방향도 어느 쪽이다.
  • 에지도 다른 정점 한 정점에서 지시되는 것을 (또는 동일한 정점) 방향 그래프.
  • O 정점 : 두 정점 가장자리 연결되어있다.
  • 경로 : 정점의 두 정점리스트를 연결도.

    8.6.1지도 만들기

    리스트, 스택, 큐와 나무 컨테이너 요소를 수용하고 있습니다.
    테이블이 더 작업을 필요로 만들기 :

  • 표에 정점을 추가
  • 테이블의 측면 추가
  • 표에 무게를 추가

    그림 8.6.2 알고리즘

    깊이 우선 탐색

    우리는 스택, 두 정점 사이의 경로를 찾을하려고 할 때 정점 방문을 저장합니다. 우선 검색 이웃 정점 깊이 시작점 먼저 확인합니다. 그것이 끝이 경우, 검색이 종료됩니다. 그렇지 않으면, 모든 첫 번째 정점에 인접한 정점을 확인합니다.
    우리는 저장하고 필요할 때 출발점 다른 이웃 정점, 그 때 사용됩니다 필요합니다. 우리가 지금까지 각 노드로 경로를 따라 방문하고자하기 때문에 백 엔드가 발견되지 않는 경우, 스택은 정점을 저장하기위한 적절한 데이터 구조 그러므로입니다.
    우리는 정점 정점 이웃 모두가 스택에있는 넣어되면이 정점을 방문, 그것은이 표시됩니다. 우리가 이미 방문한 정점을 처리하는 경우, 그것은 스택에 또 다시 같은 정점을 가져올 것이다. 이 종료되지 않을 수 있기 때문에 그런 다음 알고리즘은 알고리즘을 호출 할 수 없습니다. 그래서 우리는 한 번 이상 같은 정점을 처리 할 수 없습니다.
    우리가 가장 깊은 지점으로 이동이 검색은, 깊이 우선 검색이라고합니다.

    BFS

    깊이 우선 검색에서 위치가 다시 가능한 한 우리의 작은 통과 계속 할 수 없을 때왔다. 우리는이 정점, 스택의 상단에 그 경로에서 가장 가까운 경로에서 시작하십시오. 폭 우선 검색에서 우리는 초기 정점에서 시작하는 경로를 찾기 위해 다시 충분히 할에 가고 싶다. 그래서 스택은 더 이상 적절한 데이터 구조 이전 경로를 찾고되지 않습니다.

    단일 소스 최단 검색

    "최단 경로"경로 측의 값 (가중치)를 참조하여 최소 수득 가산.
    우리는이 정점 가중치가 가장 작은 정점에 부착하면서, 말을하는 것입니다 현재의 정점 가까운 정점에서 검색하려는. 우리는 우선 순위 큐 등이 추상 컨테이너를 호출 검색된 요소는 대기열에서 우선 순위가 가장 높은 요소입니다.

    8.7 서브 루틴

    여기에서 우리는 검토하고 그들이 알고리즘과 정보를 전송하는 서브 알고리즘 사이에 앞뒤로와 방법을 논의하기 위해 비 재귀 컨텍스트를 사용합니다. 때문에 언어 구조의 실제 토론 그래서 우리는 서브 루틴 대신 서브 알고리즘 같은 구조를 호출하는 데 사용.
    대부분의 고급 언어 서브 루틴의 일부 또는 부수적 언어 라이브러리입니다.

    8.7.1 매개 변수 전달

  • 매개 변수 목록 : 프로그램의 두 부분 사이의 통신 메커니즘.
  • 매개 변수 : 서브 루틴 식별자의 이름 뒤에 괄호 안에 표시.
  • 인수 : 괄호 서브 루틴 호출 열 식별자.

참조하면 서브 프로그램에서 사용되는 임시 마커로 형성 될 수있다. 서브 루틴 호출하면, 실제 식별자 장치의 이름은 서브 루틴 호출로 전송됩니다. 서브 루틴의 동작 파라미터를 정의한다. 동작 하나 개 다른 형상 파라미터로 인수를 수행하는 경우. 작업을 수행 할 수있는 대체 방법이 몇 가지 있지만, 가장 일반적으로는 다른 위치에 따라 수행된다. 첫 번째 대안 인수 첫번째 파라미터 번째 인수 대안 두번째 파라미터.
우리는 목록을 구현하기 위해 배열과 필드의 길이를 사용할 수 있습니다. 리스트에 요소를 추가하는 경우, 소자는 배열의 길이가 증가되는 위치에서 시작하여, 배열에 저장되어, 길이 1이다. 우리는 가치를 함께 결합 레코드 길이, 목록으로 알려져 있으며, 그것은 그것을 서브 루틴을 통과해야합니다.
대체 메커니즘은 메시지 보드를 사용하여 같은 비트를 운영하고 있습니다. 서브 루틴이 호출 될 때 (일상적인 메시지 보드에 기록 된 인수 목록 등) 인수 목록을 얻을 것이다. 당신은 여러 번 호출 할 필요가 각 매우 유용 동시에,에 있지 서브 루틴 인수를 호출 할 때. 이 방법으로 전송 매개 변수는 종종라고 위치 매개 변수 .

8.7.2 참가 기준 파라미터 값

기준 (또는 어드레스)에 의해 통과 통과 통과 값 파라미터, 즉, 두 가지 기본적인 방법이있다.

  • 기준값 : 도덕 (본 메시지 작성) 상기 발신 유닛 복사에 의해 전달 인자.
  • 기준 파라미터 : 인수 착신 장치 어드레스 파라미터 (게시판 쓰기).
    참조 매개 변수에 액세스하려면, 서브 루틴은 게시판에 나와있는 주소의 내용을 액세스해야합니다. 매개 변수의 값에 액세스하려면, 서브 루틴은 메시지 보드 자체의 내용에 액세스해야합니다.
    isThere 서브 루틴의 복귀 값은,이 형태의 서브 루틴이 서브 루틴의 복귀 값으로 지칭된다. 대신, 삭제 및 특정 값이 반환되지 않습니다 삽입합니다. 그러나, 그들은 매개 변수를 변경하여 목록으로 돌아 않습니다.

    제 9 장 객체 지향 디자인과 높은 수준의 프로그래밍 언어

    9.1 객체 지향 방법

    선교 하향식 솔루션은 층화. 출력으로 전송 된 데이터에 지정된 각 작업 또는 작업은 파라미터리스트를 통해 원하는 작업을 생성한다. 초점은 하향식 설계 작업이기 때문에. 반대로, 객체 지향 디자인에있어서, 상기 연산 처리 및 데이터 구조에 의해 오브젝트 데이터를 해결 객체라는 독립적 인 엔티티를 생성하는 문제가 해결된다.

    9.1.1 객체 지향

    객체 지향 설계 (OOD)의 기본 개념은 클래스 (클래스)과 오브젝트 (객체)입니다.
    목적은 사물이나 문제 엔티티의 맥락에서 의미가 객체 클래스 (또는 단순히 클래스)와 유사한 객체의 그룹을 설명합니다.

  • 도메인 : 특정 항목 클래스, 그것은 데이터 나 서브 루틴을 할 수있다.
  • 방법 : 특정 알고리즘 동작 클래스의 정의.

    9.1.2 디자인 방법

    분해 과정의 네 단계가 있습니다, 브레인 스토밍 (브레인 스토밍)는 클래스의 첫 번째 단계에서 문제를 결정하는 것입니다. 에서 필터 이 단계에서, 클래스가 결합 될 수있는 또한 클래스를 결여하는보고, 클래스를 결정하기 위해 브레인 스토밍 단계를 검토 할 것입니다. 장면 단계는 각 클래스의 동작을 결정합니다. 각 클래스는 자신의 행동에 대해서만 책임이 있기 때문에, 그래서 우리의 클래스 행위를 호출 책임을 . 알고리즘의 마지막 단계는 책임이다,이 단계에서 작성된 알고리즘의 모든 클래스의 책임이 나열됩니다. CRC 카드 도구는이 단계에서 정보의 유형을 기록하는 데 사용됩니다.
    책임의 두 가지 유형이 있습니다, 그 클래스 자체는 알고 있어야합니다 (지식)와 클래스 (동작을) 할 수 있어야하는 것이다.

  • 캡슐화 :과 같이 움직임 데이터 및 속성 데이터의 논리 연산과 그 구현 상세로부터 분리된다.

    컴퓨터의 예 9.1.3

    책임 알고리즘

    Person 클래스는 두 가지 책임이 초기화 및 출력을 중단 할 필요가있다. 이름 때문에 이러한 클래스는 자신과 자신의 출력을 초기화 할 수있는 클래스입니다. 루틴이라는 객체 지향 설계 방법에서 함께 호출 할 객체 플러스 지점 수의 메소드 이름입니다.
    이 클래스의 이름을 지정하는 두 가지 책임, 즉 초기화 및 출력을 가지고, 서로 다른 알고리즘을 가지고있다. 초기화 책임은 이름을 입력하라는 메시지를 표시해야하며, 알고리즘은 이름을 읽어야합니다. 출력 책임은 출력 이름과 성, 그리고 적절한 라벨을 부여해야합니다.

    9.2 번역 과정

    머신 코드, 머신 코드 실행 어셈블러 최종 출력으로 어셈블리 언어 명령어를 변환 입력 어셈블러, 어셈블리 언어로 작성된 프로그램.

    9.2.1 컴파일러

    프로그램과 높은 수준의 프로그래밍 언어로 작성된 번역 디자인 프로그램라는 컴파일러를 . 참고 : 컴파일러는 프로그램입니다.

    9.2.2 통역

    통역은 번역과 문장의 문장 순서를 실행하기위한 프로그램입니다. 개인이 다른 실행 어셈블러와 컴파일러 출력에만 기계 코드 기계 코드로하고, 인터프리터는 즉시 번역 된 문장 후 문을 실행합니다.
    자바 디자인에 휴대 성이 가장 중요한 특성이다. - 자바는 기계 언어 표준으로 컴파일 된 바이트 코드 .

    9.3 프로그래밍 언어 패러다임

    패러다임 :와 "패턴 모델과 같은 개체" ", 개념, 연습과 값이 특히 정신적 인 훈련을 위해, 자신의 폴리머를 관찰 할 수있는 현실적인 방법을 구성하는 일련의 가정."
    두 가지 패러다임, 즉 명령과 문이있다.

    9.3.1 필수 패러다임

    필수 모델 : 일반적으로 사용되는 프로그래밍 언어 모델 효과의 거대한 대부분을 준 메모리에 폰 노이만 순차적 명령어 피연산자 값 모델. 따라서 패러다임 명령 실행 순서는, 변수를 사용하여 상기 메모리 어드레스를 나타내고, 이러한 변수 입문 값이 변경되는 화학식을 갖는 이러한 명령.

    프로세스 중심의 패러다임

    프로세스 지향 프로그래밍은 문이 서브 루틴으로 그룹화 명령 형 모델이다. 의사 코드 예제는이 모델을 보여줍니다.

    객체 지향 패러다임

    객체 지향 관점에서 객체와 상호 작용하는 방법입니다. 프로세스 지향 패러다임에서, 데이터는 수동적 인 것으로 간주되고, 프로그램에 의해 조작된다. 객체 지향 패러다임에서, 데이터 객체는 활성이다. 코드 객체와 바인딩 동작 대상입니다.

    9.3.2 선언 패러다임

    선언적 패러다임은 프로세스가 결과를 설명 완료되지 않고, 모델의 결과를 설명합니다. 논리 기능과 유형이 패러다임에서는 두 가지 기본 모델이있다.

    기능 모델

    함수의 수학적 개념을 기반으로 기능 모델.

    논리 프로그래밍

    상징적 인 논리의 원칙을 기반으로 논리 프로그래밍. 이 모델은 객체와 객체 사이의 관계에 대한 일련의 규칙에 대한 사실의 집합이 포함되어 있습니다. 프로그램은 이러한 개체 및 관계의 발전에 사실과 규칙을 포함하여 질문을 할 수 있습니다. 알고리즘에 대한 답변이 사실과 규칙을 보여 밀어 논리의 규칙에 잠재적 인 문제를 해결합니다.

    9.4 고급 기능 프로그래밍 언어

    ---- 의사 코드 구조의 반복 (사이클)의 두 종류 선택 명령어의 심볼이다.
    부울 표현식 식별자 시퀀스 인 사업자에 의해 분리 된 식별자 간의 호환성이있는 값은 참 또는 거짓이다. 부울 표현 될 수있다 :

  • 부울 변수
  • 연산 식 플러스 관계 연산자, 플러스 부울 식
  • 부울 식은 부울 연산자 플러스 부울 식을 추가

부울 연산자는 특수 연산자 AND, OR 및 NOT입니다. 두 표현식은 참, AND 연산자는 true, 그렇지 않은 경우는 false 반환합니다. 두 표현식은 거짓, OR 연산자는 달리 참, 거짓 반환합니다. NOT 연산자는 식의 값을 변경합니다.

9.4.2 데이터 분류

  • 강한 입력 각 변수 타입,이 타입의 값이 변수에 저장 될 수있다.
  • 데이터 유형 : 값 세트 및 기본 동작 값 컬렉션이 유형에 적용될 수있다.

    데이터 유형

    물리적 데이터 심볼 정보를 표시합니다.
    정수, 실수, 문자 및 부울 데이터 형식이라 단순 또는 원자 데이터 유형은 문자열 데이터 유형은 상기 특징을 갖는 복합 데이터 유형이지만, 일반적으로 단순한 데이터 유형으로 간주한다.

    정수

    정수 데이터 유형을 정수 값의 범위로 표현되고,이 범위의 정수 값으로 표현 된 바이트 수에 의해 결정된다.
    표준 문자 +와에 의해 덧셈과 뺄셈은 - 나타냅니다. 일반적으로 곱셈과 나눗셈 및 * / 표현. 대부분의 언어는 또한 나머지 연산자로 언급 정수 나누기 연산자의 나머지를 반환합니다.

    현실

    실수 데이터 형식의 정밀도 지정된 숫자의 범위를 나타냅니다.

    문자

    ASCII 문자 집합은 유니 코드 문자 집합을 나타내는 바이트가 2 바이트를 필요로 필요합니다.

    부울

    Boolean 데이터 유형은 --true과 거짓 두 개의 값이 있습니다.

    문자열은 일련의 문자, 일부 언어에서, 이것은 종종 데이터 값의 순서를 볼 수 있습니다.

    성명서

  • 문 : 문 변수, 행동 또는 다른 개체 식별자 관련 언어는 프로그래머가 할 수 있도록, 이름은 이러한 항목을 의미합니다.
  • 예약 된 단어 : 단어가 특별한 의미를 가진 언어, 그것은 식별자로 사용할 수 없습니다.
  • 대소 문자 : 대문자와 소문자가 다른 고려는 동일 형태의 두 개의 철자하지만 다른 문자 식별자는 두 개의 서로 다른 식별자로 간주된다.

    9.4.3 입력 / 출력 구조

    여러 줄에 문자 스트림으로 볼 수있는 텍스트 데이터 입력의 높은 수준의 언어. 의미 문자 데이터 유형의 값을 저장하는 메모리 셀에 의해 결정된다. 모든 입력 문을 읽을 수 있도록 데이터를 입력 제표 및 변수 이름을 저장하는 변수와 데이터 스트림 자체를 선언, 즉 세 부분으로 구성되어 있습니다. 입력 변수와 같은 순서로 문이 입력 스트림의 값으로 표시되어야 나타납니다. 변수가 입력 스트림의 문자를 해석하는 방법 결정의 유형을 입력합니다. 문자 스트림 출력 문을 작성합니다. 나열된 프로젝트 출력 문은 리터럴 값 또는 변수 이름이 될 수 있습니다. 텍스트 값은 출력 문 번호 나 문자열을 직접 작성됩니다. 유형 비트 패턴을 해석하는 방법을 결정합니다.

    9.4.4 제어 구조

    반복 선택 루틴 : 의사 세 흐름 제어 알고리즘을 변화시키는 방법을 제공한다. 이러한 구조는 제어 구조라고합니다.

    중첩 된 논리

    스킵 또는 제어 구조 문을 포함 할 수있다 반복. Select 문은 루프 구조를 중첩 될 수 있습니다. 중첩 루프 구조는 성명에서 선택할 수 있습니다. 루프의 선택은 루틴 중첩 될 수 루틴은 루프 구조 또는 선택 중첩 될 수있다.

    비동기 처리

  • 비동기 :이 컴퓨터에서 다른 작업과 동시에 발생하지 않습니다 즉, 컴퓨터의 작동이 동기화되지 않습니다.

비동기 처리는 이벤트 중심 처리했다.

9.5 객체 지향 언어 기능

9.5.1 포장

  • 패키지 : 비밀 정보는 언어 기능을 실시.
  • Object 클래스 또는 클래스 (문제 해결 단계) : 설명 유사한 특성 및 개체의 집합 행동.
  • 객체 (문제 해결 단계) : 문제의 배경에 관한 일이나 단체.
  • 클래스의 한 예 : 개체 (구현 단계).
  • 클래스 (구현 단계) : 스키마 객체.

    9.5.2 클래스

  • 인스턴스화 : 객체 클래스를 만듭니다.

    9.5.3 상속

  • 상속 : 다른 클래스 (데이터 필드 및 메소드)의 특성을 획득하기위한 급기구.
  • 슈퍼 클래스 : 상속 된 클래스.
  • 파생 클래스 : 상속 된 클래스입니다.

이 아키텍처에서 낮은 레벨은보다 전문적인 객체에 위치해 있습니다.

9.5.4 다형성

  • 다형성 : 방법 아키텍처 언어 상속 및 타겟 애플리케이션에 적합한 방법의 능력에 따라 동일한 이름을 갖는 두 할.

추천

출처www.cnblogs.com/wty2419/p/11768188.html