14 พหุสัณฐานและการนำไปใช้ในโปรแกรม แนวคิดการเขียนโปรแกรมเชิงวัตถุ Java

s_a_p 20 สิงหาคม 2551 เวลา 19:09 น

ความแตกต่างสำหรับผู้เริ่มต้น

  • PHP

ความหลากหลายเป็นหนึ่งในสามกระบวนทัศน์ OOP หลัก กล่าวโดยสรุป polymorphism คือความสามารถของวัตถุในการใช้วิธีการของคลาสที่ได้รับซึ่งไม่มีอยู่ในเวลาที่สร้างฐานขึ้นมา สำหรับผู้ที่ไม่มีความรู้เรื่อง OOP เป็นพิเศษ อาจฟังดูซับซ้อน ดังนั้นเรามาดูการใช้ความหลากหลายโดยใช้ตัวอย่าง

การกำหนดปัญหา

สมมติว่าไซต์ต้องการสิ่งพิมพ์สามประเภท ได้แก่ ข่าว ประกาศ และบทความ มีความคล้ายคลึงกันในบางเรื่อง - ทั้งหมดมีชื่อเรื่องและข้อความ ข่าวและประกาศมีวันที่ ในบางแง่มีความแตกต่างกัน - บทความมีผู้เขียน ข่าวมีแหล่งที่มา และโฆษณามีวันที่ที่ไม่เกี่ยวข้องหลังจากนั้น

ตัวเลือกที่ง่ายที่สุดที่นึกถึงคือเขียนสามคลาสแยกกันและทำงานกับคลาสเหล่านั้น หรือเขียนคลาสเดียวที่จะมีคุณสมบัติทั้งหมดที่มีอยู่ในสิ่งพิมพ์ทั้งสามประเภท และจะใช้เฉพาะที่จำเป็นเท่านั้น แต่สำหรับประเภทที่แตกต่างกัน วิธีการที่คล้ายกันในตรรกะควรทำงานแตกต่างกัน การสร้างวิธีการประเภทเดียวกันหลายวิธีสำหรับประเภทที่แตกต่างกัน (get_news, get_announcements, get_articles) นั้นเป็นเรื่องที่ไม่รู้เลย นี่คือจุดที่ความหลากหลายมีประโยชน์

ชั้นเรียนนามธรรม

พูดโดยคร่าวๆ นี่คือคลาสเทมเพลต ใช้ฟังก์ชันการทำงานเฉพาะในระดับที่ทราบในปัจจุบันเท่านั้น คลาสที่ได้รับมาช่วยเสริมมัน แต่ถึงเวลาที่ต้องเปลี่ยนจากทฤษฎีไปสู่การปฏิบัติ ฉันขอจองทันที: เรากำลังพิจารณาตัวอย่างดั้งเดิมที่มีฟังก์ชันการทำงานน้อยที่สุด คำอธิบายทั้งหมดอยู่ในความคิดเห็นในโค้ด

การตีพิมพ์ในชั้นเรียนนามธรรม
{
// ตารางที่เก็บข้อมูลบนองค์ประกอบ
ป้องกันตาราง $ ;

// คุณสมบัติขององค์ประกอบไม่เป็นที่รู้จักสำหรับเรา
ป้องกัน $properties = array();

// ตัวสร้าง

{
// โปรดทราบว่าเราไม่รู้ว่าเราต้องการดึงข้อมูลจากตารางไหน
$result = mysql_query ("SELECT * FROM `" . $this -> table . "` WHERE `id`="" . $id . "" จำกัด 1" );
// เราไม่รู้ว่าเราได้รับข้อมูลอะไรบ้าง
$this -> คุณสมบัติ = mysql_fetch_assoc ($ผลลัพธ์ );
}

// วิธีการเดียวกันสำหรับสิ่งพิมพ์ทุกประเภท ส่งคืนค่าคุณสมบัติ
ฟังก์ชั่นสาธารณะ get_property ($ ชื่อ)
{
ถ้า (isset($this -> คุณสมบัติ [ $name ]))
ส่งคืน $this -> คุณสมบัติ [ $name ];

กลับเท็จ;
}

// วิธีการเดียวกันสำหรับสิ่งพิมพ์ทุกประเภท ตั้งค่าคุณสมบัติ
ฟังก์ชั่นสาธารณะ set_property ($ ชื่อ, $value)
{
ถ้า (!isset($this -> คุณสมบัติ [ $name ]))
กลับเท็จ;

$this -> คุณสมบัติ [ $name ] = $value ;

ส่งกลับค่า $;
}

// และวิธีนี้ควรพิมพ์สิ่งพิมพ์ แต่เราไม่รู้ว่าจะต้องทำอย่างไร ดังนั้นเราจึงประกาศให้เป็นนามธรรม
ฟังก์ชั่นสาธารณะนามธรรม do_print ();
}

ชั้นเรียนที่ได้รับ

ตอนนี้คุณสามารถก้าวไปสู่การสร้างคลาสที่ได้รับซึ่งใช้ฟังก์ชันที่ขาดหายไปได้

ข่าวคลาสขยายการตีพิมพ์
{
// ตัวสร้างคลาสข่าว ซึ่งได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าตารางที่เก็บข้อมูลข่าวสาร
$นี่ -> ตาราง = "news_table" ;
ผู้ปกครอง :: __ สร้าง ($ id );
}

ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "

" ;
echo $this -> คุณสมบัติ ["ข้อความ" ];
เสียงสะท้อน "
ที่มา: " . $this -> คุณสมบัติ [ "แหล่งที่มา" ];
}
}

ประกาศชั้นเรียนขยายการตีพิมพ์
{
// ตัวสร้างคลาสโฆษณาที่ได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าของตารางที่เก็บข้อมูลโฆษณา
$นี่ -> table = "ประกาศ_ตาราง" ;
// เรียก Constructor ของคลาสพาเรนต์
ผู้ปกครอง :: __ สร้าง ($ id );
}

// แทนที่วิธีการพิมพ์แบบนามธรรม
ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "
ความสนใจ! ประกาศมีผลใช้บังคับจนถึง “
- $นี่ -> คุณสมบัติ ["end_date" ];
เสียงสะท้อน "

" . $this -> คุณสมบัติ [ "ข้อความ" ];
}
}

บทความในชั้นเรียนขยายการตีพิมพ์
{
// ตัวสร้างของคลาสบทความซึ่งได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าของตารางที่เก็บข้อมูลในบทความ
$นี่ -> table = "articles_table" ;
// เรียก Constructor ของคลาสพาเรนต์
ผู้ปกครอง :: __ สร้าง ($ id );
}

// แทนที่วิธีการพิมพ์แบบนามธรรม
ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "

" ;
echo $this -> คุณสมบัติ ["ข้อความ" ];
เสียงสะท้อน "
" . $this -> คุณสมบัติ [ "ผู้เขียน" ];
}
}

ตอนนี้เกี่ยวกับการใช้งาน

ประเด็นก็คือรหัสเดียวกันนี้ใช้สำหรับวัตถุที่มีคลาสต่างกัน

// เติมอาร์เรย์สิ่งพิมพ์ด้วยวัตถุที่ได้มาจากสิ่งพิมพ์
$publications = ข่าวใหม่ ($news_id);
$publications = ประกาศใหม่($announcement_id);
$สิ่งพิมพ์ = บทความใหม่($article_id);

Foreach ($สิ่งพิมพ์เป็น $publication) (
//ถ้าเราทำงานร่วมกับทายาทสิ่งพิมพ์
ถ้า ($ อินสแตนซ์ของการตีพิมพ์ของการตีพิมพ์) (
// จากนั้นพิมพ์ข้อมูล
$สิ่งพิมพ์ -> do_print();
) อื่น (
// ข้อยกเว้นหรือการจัดการข้อผิดพลาด
}
}

นั่นคือทั้งหมดที่ เพียงขยับมือเล็กน้อย กางเกงก็จะกลายเป็นกางเกงขาสั้นที่หรูหรา :-)

ประโยชน์หลักของความหลากหลายคือความง่ายในการสร้างคลาสใหม่ที่มีพฤติกรรมคล้ายกับคลาสที่เกี่ยวข้อง ซึ่งจะทำให้สามารถขยายและปรับเปลี่ยนได้ บทความนี้เป็นเพียงตัวอย่างเบื้องต้น แต่ถึงแม้จะแสดงให้เห็นว่าการใช้นามธรรมสามารถทำให้การพัฒนาง่ายขึ้นได้อย่างไร เราสามารถทำงานกับข่าวสารได้เหมือนกับที่เราทำกับโฆษณาหรือบทความ และเราไม่จำเป็นต้องรู้ด้วยซ้ำว่าเรากำลังทำอะไรอยู่! ในการใช้งานจริงที่ซับซ้อนกว่ามาก ประโยชน์นี้จะยิ่งใหญ่กว่านั้นอีก

ทฤษฎีเล็กน้อย

  • วิธีการที่ต้องเอาชนะเรียกว่านามธรรม มันเป็นตรรกะที่หากคลาสมีเมธอดนามธรรมอย่างน้อยหนึ่งวิธี มันก็จะเป็นนามธรรมเช่นกัน
  • แน่นอนว่าไม่สามารถสร้างอ็อบเจ็กต์ของคลาสนามธรรมได้ ไม่เช่นนั้นก็จะไม่เป็นนามธรรม
  • คลาสที่ได้รับมามีคุณสมบัติและเมธอดที่เป็นของคลาสพื้นฐาน และยังสามารถมีเมธอดและคุณสมบัติของตัวเองได้ด้วย
  • วิธีการที่ถูกแทนที่ในคลาสที่ได้รับเรียกว่าวิธีการเสมือน ไม่มีข้อมูลเกี่ยวกับวิธีนี้ในคลาสนามธรรมพื้นฐาน
  • ประเด็นที่เป็นนามธรรมคือการกำหนดวิธีการในตำแหน่งที่มีข้อมูลที่สมบูรณ์ที่สุดเกี่ยวกับวิธีการทำงาน
อัปเดต:เกี่ยวกับการละเมิด sql-inj และ MVC - สุภาพบุรุษนี่เป็นเพียงตัวอย่างและตัวอย่างของความหลากหลายซึ่งฉันไม่คิดว่ามันจำเป็นต้องใส่ใจกับสิ่งเหล่านี้ นี่เป็นหัวข้อสำหรับบทความที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

ความหลากหลายเป็นหนึ่งในสามกระบวนทัศน์ OOP หลัก กล่าวโดยสรุป polymorphism คือความสามารถของวัตถุในการใช้วิธีการของคลาสที่ได้รับซึ่งไม่มีอยู่ในเวลาที่สร้างฐานขึ้นมา สำหรับผู้ที่ไม่มีความรู้เรื่อง OOP เป็นพิเศษ อาจฟังดูซับซ้อน ดังนั้นเรามาดูการใช้ความหลากหลายโดยใช้ตัวอย่าง

การกำหนดปัญหา

สมมติว่าไซต์ต้องการสิ่งพิมพ์สามประเภท ได้แก่ ข่าว ประกาศ และบทความ มีความคล้ายคลึงกันในบางเรื่อง - ทั้งหมดมีชื่อเรื่องและข้อความ ข่าวและประกาศมีวันที่ ในบางแง่มีความแตกต่างกัน - บทความมีผู้เขียน ข่าวมีแหล่งที่มา และโฆษณามีวันที่ที่ไม่เกี่ยวข้องหลังจากนั้น

ตัวเลือกที่ง่ายที่สุดที่นึกถึงคือเขียนสามคลาสแยกกันและทำงานกับคลาสเหล่านั้น หรือเขียนคลาสเดียวที่จะมีคุณสมบัติทั้งหมดที่มีอยู่ในสิ่งพิมพ์ทั้งสามประเภท และจะใช้เฉพาะที่จำเป็นเท่านั้น แต่สำหรับประเภทที่แตกต่างกัน วิธีการที่คล้ายกันในตรรกะควรทำงานแตกต่างกัน การสร้างวิธีการประเภทเดียวกันหลายวิธีสำหรับประเภทที่แตกต่างกัน (get_news, get_announcements, get_articles) นั้นเป็นเรื่องที่ไม่รู้เลย นี่คือจุดที่ความหลากหลายมีประโยชน์

ชั้นเรียนนามธรรม

พูดโดยคร่าวๆ นี่คือคลาสเทมเพลต ใช้ฟังก์ชันการทำงานเฉพาะในระดับที่ทราบในปัจจุบันเท่านั้น คลาสที่ได้รับมาช่วยเสริมมัน แต่ถึงเวลาที่ต้องเปลี่ยนจากทฤษฎีไปสู่การปฏิบัติ ฉันขอจองทันที: เรากำลังพิจารณาตัวอย่างดั้งเดิมที่มีฟังก์ชันการทำงานน้อยที่สุด คำอธิบายทั้งหมดอยู่ในความคิดเห็นในโค้ด

การตีพิมพ์ในชั้นเรียนนามธรรม
{
// ตารางที่เก็บข้อมูลบนองค์ประกอบ
ป้องกันตาราง $ ;

// คุณสมบัติขององค์ประกอบไม่เป็นที่รู้จักสำหรับเรา
ป้องกัน $properties = array();

// ตัวสร้าง

{
// โปรดทราบว่าเราไม่รู้ว่าเราต้องการดึงข้อมูลจากตารางไหน
$result = mysql_query ("SELECT * FROM `" . $this -> table . "` WHERE `id`="" . $id . "" จำกัด 1" );
// เราไม่รู้ว่าเราได้รับข้อมูลอะไรบ้าง
$this -> คุณสมบัติ = mysql_fetch_assoc ($ผลลัพธ์ );
}

// วิธีการเดียวกันสำหรับสิ่งพิมพ์ทุกประเภท ส่งคืนค่าคุณสมบัติ
ฟังก์ชั่นสาธารณะ get_property ($ ชื่อ)
{
ถ้า (isset($this -> คุณสมบัติ [ $name ]))
ส่งคืน $this -> คุณสมบัติ [ $name ];

กลับเท็จ;
}

// วิธีการเดียวกันสำหรับสิ่งพิมพ์ทุกประเภท ตั้งค่าคุณสมบัติ
ฟังก์ชั่นสาธารณะ set_property ($ ชื่อ, $value)
{
ถ้า (!isset($this -> คุณสมบัติ [ $name ]))
กลับเท็จ;

$this -> คุณสมบัติ [ $name ] = $value ;

ส่งกลับค่า $;
}

// และวิธีนี้ควรพิมพ์สิ่งพิมพ์ แต่เราไม่รู้ว่าจะต้องทำอย่างไร ดังนั้นเราจึงประกาศให้เป็นนามธรรม
ฟังก์ชั่นสาธารณะนามธรรม do_print ();
}

ชั้นเรียนที่ได้รับ

ตอนนี้คุณสามารถก้าวไปสู่การสร้างคลาสที่ได้รับซึ่งใช้ฟังก์ชันที่ขาดหายไปได้

ข่าวคลาสขยายการตีพิมพ์
{
// ตัวสร้างคลาสข่าว ซึ่งได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าตารางที่เก็บข้อมูลข่าวสาร
$นี่ -> ตาราง = "news_table" ;
ผู้ปกครอง :: __ สร้าง ($ id );
}

ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "

" ;
echo $this -> คุณสมบัติ ["ข้อความ" ];
เสียงสะท้อน "
ที่มา: " . $this -> คุณสมบัติ [ "แหล่งที่มา" ];
}
}

ประกาศชั้นเรียนขยายการตีพิมพ์
{
// ตัวสร้างคลาสโฆษณาที่ได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าของตารางที่เก็บข้อมูลโฆษณา
$นี่ -> table = "ประกาศ_ตาราง" ;
// เรียก Constructor ของคลาสพาเรนต์
ผู้ปกครอง :: __ สร้าง ($ id );
}

// แทนที่วิธีการพิมพ์แบบนามธรรม
ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "
ความสนใจ! ประกาศมีผลใช้บังคับจนถึง “
- $นี่ -> คุณสมบัติ ["end_date" ];
เสียงสะท้อน "

" . $this -> คุณสมบัติ [ "ข้อความ" ];
}
}

บทความในชั้นเรียนขยายการตีพิมพ์
{
// ตัวสร้างของคลาสบทความซึ่งได้มาจากคลาสสิ่งพิมพ์
ฟังก์ชั่นสาธารณะ __ สร้าง ($ id)
{
// ตั้งค่าของตารางที่เก็บข้อมูลในบทความ
$นี่ -> table = "articles_table" ;
// เรียก Constructor ของคลาสพาเรนต์
ผู้ปกครอง :: __ สร้าง ($ id );
}

// แทนที่วิธีการพิมพ์แบบนามธรรม
ฟังก์ชั่นสาธารณะ do_print()
{
echo $this -> คุณสมบัติ ["ชื่อ" ];
เสียงสะท้อน "

" ;
echo $this -> คุณสมบัติ ["ข้อความ" ];
เสียงสะท้อน "
" . $this -> คุณสมบัติ [ "ผู้เขียน" ];
}
}

ตอนนี้เกี่ยวกับการใช้งาน

ประเด็นก็คือรหัสเดียวกันนี้ใช้สำหรับวัตถุที่มีคลาสต่างกัน

// เติมอาร์เรย์สิ่งพิมพ์ด้วยวัตถุที่ได้มาจากสิ่งพิมพ์
$publications = ข่าวใหม่ ($news_id);
$publications = ประกาศใหม่($announcement_id);
$สิ่งพิมพ์ = บทความใหม่($article_id);

Foreach ($สิ่งพิมพ์เป็น $publication) (
//ถ้าเราทำงานร่วมกับทายาทสิ่งพิมพ์
ถ้า ($ อินสแตนซ์ของการตีพิมพ์ของการตีพิมพ์) (
// จากนั้นพิมพ์ข้อมูล
$สิ่งพิมพ์ -> do_print();
) อื่น (
// ข้อยกเว้นหรือการจัดการข้อผิดพลาด
}
}

นั่นคือทั้งหมดที่ เพียงขยับมือเล็กน้อย กางเกงก็จะกลายเป็นกางเกงขาสั้นที่หรูหรา :-)

ประโยชน์หลักของความหลากหลายคือความง่ายในการสร้างคลาสใหม่ที่มีพฤติกรรมคล้ายกับคลาสที่เกี่ยวข้อง ซึ่งจะทำให้สามารถขยายและปรับเปลี่ยนได้ บทความนี้เป็นเพียงตัวอย่างเบื้องต้น แต่ถึงแม้จะแสดงให้เห็นว่าการใช้นามธรรมสามารถทำให้การพัฒนาง่ายขึ้นได้อย่างไร เราสามารถทำงานกับข่าวสารได้เหมือนกับที่เราทำกับโฆษณาหรือบทความ และเราไม่จำเป็นต้องรู้ด้วยซ้ำว่าเรากำลังทำอะไรอยู่! ในการใช้งานจริงที่ซับซ้อนกว่ามาก ประโยชน์นี้จะยิ่งใหญ่กว่านั้นอีก

ทฤษฎีเล็กน้อย

  • วิธีการที่ต้องเอาชนะเรียกว่านามธรรม มันเป็นตรรกะที่หากคลาสมีเมธอดนามธรรมอย่างน้อยหนึ่งวิธี มันก็จะเป็นนามธรรมเช่นกัน
  • แน่นอนว่าไม่สามารถสร้างอ็อบเจ็กต์ของคลาสนามธรรมได้ ไม่เช่นนั้นก็จะไม่เป็นนามธรรม
  • คลาสที่ได้รับมามีคุณสมบัติและเมธอดที่เป็นของคลาสพื้นฐาน และยังสามารถมีเมธอดและคุณสมบัติของตัวเองได้ด้วย
  • วิธีการที่ถูกแทนที่ในคลาสที่ได้รับเรียกว่าวิธีการเสมือน ไม่มีข้อมูลเกี่ยวกับวิธีนี้ในคลาสนามธรรมพื้นฐาน
  • ประเด็นที่เป็นนามธรรมคือการกำหนดวิธีการในตำแหน่งที่มีข้อมูลที่สมบูรณ์ที่สุดเกี่ยวกับวิธีการทำงาน
อัปเดต:เกี่ยวกับการละเมิด sql-inj และ MVC - สุภาพบุรุษนี่เป็นเพียงตัวอย่างและตัวอย่างของความหลากหลายซึ่งฉันไม่คิดว่ามันจำเป็นต้องใส่ใจกับสิ่งเหล่านี้ นี่เป็นหัวข้อสำหรับบทความที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

ความหลากหลายทางพันธุกรรมเป็นภาวะที่ยีนมีความหลากหลายในระยะยาว แต่ความถี่ของยีนที่หายากที่สุดในประชากรนั้นมากกว่าหนึ่งเปอร์เซ็นต์ การบำรุงรักษาเกิดขึ้นเนื่องจากการกลายพันธุ์ของยีนอย่างต่อเนื่องรวมถึงการรวมตัวกันอีกครั้งอย่างต่อเนื่อง จากการวิจัยที่จัดทำโดยนักวิทยาศาสตร์ ความหลากหลายทางพันธุกรรมได้แพร่หลายมากขึ้น เนื่องจากมียีนหลายล้านชุดรวมกันได้

หุ้นขนาดใหญ่

การปรับตัวของประชากรให้เข้ากับสภาพแวดล้อมใหม่ที่ดีขึ้นนั้นขึ้นอยู่กับความหลากหลายและในกรณีนี้วิวัฒนาการจะเกิดขึ้นเร็วกว่ามาก การประเมินจำนวนอัลลีลแบบโพลีมอร์ฟิกทั้งหมดโดยใช้วิธีทางพันธุกรรมแบบดั้งเดิมนั้นเป็นไปไม่ได้ นี่เป็นเพราะความจริงที่ว่าการมีอยู่ของยีนบางตัวในจีโนไทป์นั้นเกิดขึ้นได้จากการผสมข้ามบุคคลที่มีลักษณะฟีโนไทป์ที่แตกต่างกันซึ่งกำหนดโดยยีน หากคุณรู้ว่าส่วนใดของประชากรกลุ่มหนึ่งประกอบด้วยบุคคลที่มีฟีโนไทป์ต่างกัน ก็เป็นไปได้ที่จะกำหนดจำนวนอัลลีลที่ขึ้นอยู่กับการก่อตัวของลักษณะเฉพาะ

ทุกอย่างเริ่มต้นอย่างไร?

พันธุศาสตร์เริ่มพัฒนาอย่างรวดเร็วในช่วงทศวรรษที่ 60 ของศตวรรษที่ผ่านมา ตอนนั้นเองที่เอนไซม์ในเจลเริ่มถูกนำมาใช้ซึ่งทำให้สามารถระบุความหลากหลายทางพันธุกรรมได้ วิธีนี้คืออะไร? ด้วยความช่วยเหลือของมัน โปรตีนจึงเคลื่อนที่ในสนามไฟฟ้า ซึ่งขึ้นอยู่กับขนาดของโปรตีนที่ถูกเคลื่อนย้าย โครงสร้างของมัน ตลอดจนประจุทั้งหมดในส่วนต่างๆ ของเจล หลังจากนั้นขึ้นอยู่กับตำแหน่งและจำนวนจุดที่ปรากฏ สารที่ระบุจะถูกระบุ ในการประเมินความหลากหลายของโปรตีนในประชากร ควรตรวจดูประมาณ 20 ตำแหน่งขึ้นไป จากนั้น ใช้วิธีการทางคณิตศาสตร์เพื่อกำหนดจำนวนและอัตราส่วนของโฮโม- และเฮเทอโรไซโกต ตามการวิจัย ยีนบางตัวสามารถเป็น monomorphic ได้ ในขณะที่บางตัวอาจเป็น polymorphic ที่ผิดปกติ

ประเภทของความหลากหลาย

แนวคิดเรื่องความหลากหลายนั้นกว้างมาก โดยรวมถึงรูปแบบการนำส่งและรูปแบบที่สมดุล ขึ้นอยู่กับค่าการคัดเลือกของยีนและการคัดเลือกโดยธรรมชาติ ซึ่งสร้างแรงกดดันต่อประชากร นอกจากนี้ยังอาจเป็นทางพันธุกรรมและโครโมโซมได้

ความหลากหลายของยีนและโครโมโซม

ความหลากหลายของยีนในร่างกายมีอัลลีลมากกว่าหนึ่งตัวอย่างที่เด่นชัดคือเลือด โครโมโซมแสดงถึงความแตกต่างภายในโครโมโซมที่เกิดขึ้นเนื่องจากความผิดปกติ อย่างไรก็ตามมีความแตกต่างในภูมิภาคเฮเทอโรโครมาติก ในกรณีที่ไม่มีพยาธิสภาพที่จะนำไปสู่การพิการหรือเสียชีวิต การกลายพันธุ์ดังกล่าวเป็นกลาง

พหุสัณฐานเฉพาะกาล

Transitional Polymorphism เกิดขึ้นเมื่ออัลลีลที่ครั้งหนึ่งเคยพบเห็นได้ทั่วไปถูกแทนที่ในประชากรด้วยอีกอัลลีลที่ทำให้พาหะของอัลลีลมีความสามารถในการปรับตัวมากขึ้น (เรียกอีกอย่างว่าอัลลีลหลายตัว) ด้วยความหลากหลายที่กำหนด จะมีการเปลี่ยนแปลงทิศทางในเปอร์เซ็นต์ของจีโนไทป์ เนื่องจากวิวัฒนาการเกิดขึ้นและพลวัตของมันดำเนินไป ปรากฏการณ์ของกลไกทางอุตสาหกรรมสามารถเป็นตัวอย่างที่ดีที่แสดงลักษณะของความหลากหลายในช่วงเปลี่ยนผ่าน สิ่งที่แสดงให้เห็นโดยผีเสื้อธรรมดา ๆ ซึ่งด้วยการพัฒนาของอุตสาหกรรมทำให้ปีกสีขาวของมันเปลี่ยนเป็นสีเข้ม ปรากฏการณ์นี้เริ่มถูกพบเห็นในอังกฤษ โดยที่ผีเสื้อมากกว่า 80 สายพันธุ์เปลี่ยนจากดอกสีครีมซีดไปเป็นดอกสีเข้ม ซึ่งพบเห็นครั้งแรกหลังปี 1848 ในแมนเชสเตอร์เนื่องจากการพัฒนาอย่างรวดเร็วของอุตสาหกรรม ในปี พ.ศ. 2438 ผีเสื้อกลางคืนมากกว่า 95% มีปีกสีเข้ม การเปลี่ยนแปลงดังกล่าวเกี่ยวข้องกับความจริงที่ว่าลำต้นของต้นไม้มีควันมากขึ้นและผีเสื้อสีอ่อนก็กลายเป็นเหยื่อของนักร้องหญิงอาชีพและนกโรบินได้ง่าย การเปลี่ยนแปลงเกิดขึ้นเนื่องจากอัลลีลเมลานิสติกกลายพันธุ์

ความหลากหลายที่สมดุล

คำจำกัดความของ "ความหลากหลายที่สมดุล" แสดงให้เห็นลักษณะเฉพาะของการไม่มีการเปลี่ยนแปลงในอัตราส่วนตัวเลขใดๆ ของจีโนไทป์รูปแบบต่างๆ ในประชากรที่อยู่ในสภาพแวดล้อมที่มั่นคง ซึ่งหมายความว่าจากรุ่นสู่รุ่นอัตราส่วนยังคงเท่าเดิม แต่อาจมีความผันผวนเล็กน้อยภายในค่าที่แน่นอนซึ่งคงที่ เมื่อเปรียบเทียบกับการเปลี่ยนผ่านแบบหลายรูปแบบที่สมดุล - มันคืออะไร? โดยพื้นฐานแล้วมันเป็นกระบวนการวิวัฒนาการแบบคงที่ I. I. Shmalhausen ในปี 1940 ได้ตั้งชื่อให้มันว่า สมดุลเฮเทอโรมอร์ฟิซึม

ตัวอย่างของความหลากหลายที่สมดุล

ตัวอย่างที่ชัดเจนของความหลากหลายที่สมดุลคือการมีสองเพศในสัตว์คู่สมรสหลายตัว เนื่องจากพวกเขามีข้อได้เปรียบในการคัดเลือกที่เท่าเทียมกัน อัตราส่วนภายในประชากรหนึ่งจะเท่ากันเสมอ หากมีสามีหลายคนในประชากร อัตราส่วนการคัดเลือกตัวแทนของทั้งสองเพศอาจถูกรบกวนได้ ในกรณีนี้ตัวแทนของเพศเดียวสามารถถูกทำลายโดยสิ้นเชิงหรือถูกกำจัดออกจากการสืบพันธุ์ได้ในระดับที่มากกว่าตัวแทนของเพศตรงข้าม

อีกตัวอย่างหนึ่งก็คือ กรุ๊ปเลือดตามระบบ ABO ในกรณีนี้ความถี่ของจีโนไทป์ที่แตกต่างกันในประชากรที่แตกต่างกันอาจแตกต่างกัน แต่ในเวลาเดียวกันจากรุ่นสู่รุ่นจะไม่เปลี่ยนความคงตัวของมัน พูดง่ายๆ ก็คือ ไม่มีจีโนไทป์ใดที่มีความได้เปรียบในการคัดเลือกเหนืออีกจีโนไทป์อีก ตามสถิติ ผู้ชายที่มีเลือดกรุ๊ปแรกมีอายุขัยยืนยาวกว่าสมาชิกเพศที่แข็งแกร่งกว่าคนอื่นๆ ที่มีเลือดกรุ๊ปอื่น นอกจากนี้ ความเสี่ยงในการเกิดแผลในลำไส้เล็กส่วนต้นในกลุ่มแรกยังมีความเสี่ยงสูง แต่ก็สามารถทะลุได้ และอาจทำให้เสียชีวิตได้หากได้รับความช่วยเหลือล่าช้า

ความสมดุลทางพันธุกรรม

สภาพที่เปราะบางนี้สามารถถูกรบกวนในประชากรอันเป็นผลมาจากการเกิดขึ้น และจะต้องเกิดขึ้นด้วยความถี่ที่แน่นอนและในแต่ละรุ่น การศึกษาแสดงให้เห็นว่าความหลากหลายของยีนของระบบห้ามเลือด การถอดรหัสซึ่งทำให้ชัดเจนว่ากระบวนการวิวัฒนาการส่งเสริมการเปลี่ยนแปลงเหล่านี้หรือในทางกลับกัน ต่อต้านพวกมัน มีความสำคัญอย่างยิ่ง หากคุณติดตามเส้นทางของกระบวนการกลายพันธุ์ในประชากรกลุ่มใดกลุ่มหนึ่ง คุณสามารถตัดสินคุณค่าของกระบวนการในการปรับตัวได้ด้วย สามารถมีค่าเท่ากับหนึ่งได้หากการกลายพันธุ์ไม่ได้รับการยกเว้นในระหว่างกระบวนการคัดเลือก และไม่มีอุปสรรคต่อการแพร่กระจาย

กรณีส่วนใหญ่แสดงให้เห็นว่ามูลค่าของยีนดังกล่าวน้อยกว่าหนึ่ง และในกรณีที่การกลายพันธุ์ดังกล่าวไม่สามารถสืบพันธุ์ได้ ทุกอย่างจะลดลงเหลือ 0 การกลายพันธุ์ประเภทนี้จะถูกกวาดล้างออกไปในกระบวนการคัดเลือกโดยธรรมชาติ แต่สิ่งนี้กลับทำให้ ไม่รวมการเปลี่ยนแปลงซ้ำๆ ในยีนเดียวกัน ซึ่งจะชดเชยการกำจัดซึ่งดำเนินการโดยการคัดเลือก เมื่อถึงจุดสมดุลแล้ว ยีนกลายพันธุ์อาจปรากฏขึ้นหรือหายไปในทางกลับกัน สิ่งนี้นำไปสู่กระบวนการที่สมดุล

ตัวอย่างที่สามารถอธิบายสิ่งที่เกิดขึ้นได้อย่างชัดเจนคือโรคโลหิตจางชนิดเคียว ในกรณีนี้ยีนกลายพันธุ์ที่โดดเด่นในสถานะโฮโมไซกัสมีส่วนทำให้สิ่งมีชีวิตตายเร็ว สิ่งมีชีวิตเฮเทอโรไซกัสมีชีวิตอยู่ได้แต่จะอ่อนแอต่อโรคมาลาเรียมากกว่า ความหลากหลายที่สมดุลของยีนโรคเม็ดเลือดรูปเคียวสามารถติดตามได้ในพื้นที่ที่โรคเขตร้อนนี้แพร่หลาย ในประชากรดังกล่าว โฮโมไซโกต (บุคคลที่มียีนเดียวกัน) จะถูกกำจัดออก และการคัดเลือกทำหน้าที่สนับสนุนเฮเทอโรไซโกต (บุคคลที่มียีนต่างกัน) เนื่องจากการเลือกหลายเวกเตอร์ที่เกิดขึ้นในกลุ่มยีนของประชากร จีโนไทป์จึงถูกรักษาไว้ในแต่ละรุ่น ซึ่งช่วยให้มั่นใจว่าสิ่งมีชีวิตจะปรับตัวเข้ากับสภาพแวดล้อมได้ดีขึ้น นอกจากการปรากฏตัวของยีนโรคเม็ดเลือดรูปเคียวแล้ว ยังมียีนประเภทอื่นๆ ที่แสดงลักษณะความหลากหลาย สิ่งนี้ให้อะไร? คำตอบสำหรับคำถามนี้จะเป็นปรากฏการณ์ที่เรียกว่าเฮเทอโรซีส

การกลายพันธุ์แบบเฮเทอโรไซกัสและความหลากหลาย

ความหลากหลายแบบเฮเทอโรไซกัสจะทำให้ไม่มีการเปลี่ยนแปลงทางฟีโนไทป์เมื่อมีการกลายพันธุ์แบบถอย แม้ว่าจะเป็นอันตรายก็ตาม แต่ในขณะเดียวกัน พวกมันสามารถสะสมในประชากรให้อยู่ในระดับสูง ซึ่งอาจเกินกว่าการกลายพันธุ์ที่สำคัญที่เป็นอันตรายได้

กระบวนการวิวัฒนาการ

กระบวนการวิวัฒนาการดำเนินไปอย่างต่อเนื่อง และเงื่อนไขบังคับของมันคือความหลากหลาย สิ่งที่แสดงให้เห็นคือความสามารถในการปรับตัวอย่างต่อเนื่องของประชากรกลุ่มใดกลุ่มหนึ่งให้เข้ากับแหล่งที่อยู่อาศัยของมัน สิ่งมีชีวิตต่างเพศที่อาศัยอยู่ในกลุ่มเดียวกันสามารถอยู่ในสถานะเฮเทอโรไซกัสและถ่ายทอดจากรุ่นสู่รุ่นเป็นเวลาหลายปี นอกจากนี้ อาการทางฟีโนไทป์อาจไม่เกิดขึ้น เนื่องจากมีความแปรปรวนทางพันธุกรรมในปริมาณมาก

ยีนไฟบริโนเจน

ในกรณีส่วนใหญ่ นักวิจัยพิจารณาว่าความหลากหลายของยีนไฟบริโนเจนเป็นสารตั้งต้นในการพัฒนาของโรคหลอดเลือดสมองตีบ แต่ในขณะนี้ปัญหาที่ปัจจัยทางพันธุกรรมและปัจจัยที่ได้รับสามารถมีอิทธิพลต่อการพัฒนาของโรคนี้ได้มาถึงแล้ว โรคหลอดเลือดสมองประเภทนี้เกิดขึ้นเนื่องจากการอุดตันของหลอดเลือดแดงในสมอง และโดยการศึกษาความหลากหลายของยีนไฟบริโนเจน เราสามารถเข้าใจกระบวนการต่างๆ มากมาย โดยมีอิทธิพลต่อโรคที่สามารถป้องกันโรคได้ ในปัจจุบัน นักวิทยาศาสตร์ยังไม่ได้ศึกษาความเชื่อมโยงระหว่างการเปลี่ยนแปลงทางพันธุกรรมกับพารามิเตอร์ทางชีวเคมีของเลือดไม่เพียงพอ การวิจัยเพิ่มเติมจะทำให้สามารถมีอิทธิพลต่อการดำเนินโรค เปลี่ยนวิถีของโรค หรือเพียงป้องกันได้ตั้งแต่ระยะเริ่มต้นของการพัฒนา

สวัสดี! นี่คือบทความเกี่ยวกับหนึ่งในหลักการของ OOP - polymorphism

ความหลากหลายคืออะไร

คำจำกัดความของความหลากหลายฟังดูน่ากลัว :)

ความแตกต่าง- นี่คือความเป็นไปได้ของการใช้วิธีการที่มีชื่อเดียวกันกับชุดพารามิเตอร์ที่เหมือนกันหรือต่างกันในคลาสเดียวหรือในกลุ่มของคลาสที่เกี่ยวข้องกับความสัมพันธ์แบบสืบทอด

คำ " ความหลากหลาย"อาจดูซับซ้อน แต่ก็ไม่ คุณเพียงแค่ต้องแบ่งคำจำกัดความนี้ออกเป็นส่วนๆ และแสดงพร้อมตัวอย่างว่าความหมายคืออะไร เชื่อฉันเถอะ ในตอนท้ายของบทความ คำจำกัดความของความหลากหลายนี้จะดูชัดเจนสำหรับคุณ :)

ความแตกต่างถ้าแปลก็หมายความว่า "หลายรูปแบบ"ตัวอย่างเช่น นักแสดงในละครสามารถลองเล่นได้หลายบทบาท หรือใช้ "หลายรูปแบบ"

รหัสของเราเหมือนกัน - เนื่องจากความหลากหลายทำให้มีความยืดหยุ่นมากกว่าภาษาโปรแกรมที่ไม่ใช้หลักการ OOP

แล้วเรากำลังพูดถึงรูปแบบอะไร?ก่อนอื่นเรามายกตัวอย่างและแสดงให้เห็นว่าความหลากหลายปรากฏในทางปฏิบัติอย่างไร จากนั้นจึงกลับไปสู่คำจำกัดความของมัน

polymorphism แสดงออกได้อย่างไร?

ความจริงก็คือว่า ถ้า Java ไม่มีหลักการของความหลากหลายคอมไพลเลอร์จะตีความสิ่งนี้ว่าเป็นข้อผิดพลาด:

อย่างที่คุณเห็นวิธีการในภาพแตกต่างกันตามค่าที่ยอมรับ:

  • อันดับแรกยอมรับ ภายใน
  • และอันที่สองก็ยอมรับ สตริง

อย่างไรก็ตาม เนื่องจาก Java ใช้หลักการของความหลากหลาย คอมไพเลอร์จะไม่ถือว่าสิ่งนี้เป็นข้อผิดพลาดเพราะว่า วิธีการดังกล่าวจะถือว่าแตกต่างกัน:

วิธีการตั้งชื่อเหมือนกันสะดวกมาก ตัวอย่างเช่น หากเรามีวิธีการค้นหารากที่สองของตัวเลข จะง่ายกว่ามากในการจำชื่อเดียว (เช่น ตร.ม.()) มากกว่าหนึ่งชื่อสำหรับวิธีการเดียวกัน ซึ่งเขียนสำหรับแต่ละประเภท:

อย่างที่คุณเห็น เราไม่จำเป็นต้องคิดชื่อแยกกันสำหรับแต่ละวิธี แต่สิ่งสำคัญคือต้องจำไว้! สบายมาก.

ตอนนี้คุณสามารถเข้าใจได้แล้วว่าทำไมหลักการนี้จึงมักอธิบายด้วยวลี:

อินเทอร์เฟซเดียว - หลายวิธี

นี่ถือว่าเราสามารถกรอกชื่อเดียว (หนึ่งอินเทอร์เฟซ) ซึ่งเราสามารถเข้าถึงหลายวิธี

วิธีการโอเวอร์โหลด

สิ่งที่เราแสดงข้างต้น - เรียกว่าวิธีการหลายวิธีที่มีชื่อเดียวกันและพารามิเตอร์ต่างกัน โอเวอร์โหลด- แต่นี่เป็นตัวอย่างของวิธีการโอเวอร์โหลด ในชั้นเรียนเดียว- แต่มีอีกกรณีหนึ่ง - การเอาชนะวิธีการของคลาสพาเรนต์

การเอาชนะวิธีการของผู้ปกครอง

เมื่อเราสืบทอดคลาส เราก็จะสืบทอดวิธีการทั้งหมดของมัน แต่หากเราต้องการเปลี่ยนวิธีการใดๆ ที่เราสืบทอดมา เราก็สามารถแทนที่มันได้ ตัวอย่างเช่น เราไม่จำเป็นต้องสร้างวิธีการแยกต่างหากที่มีชื่อคล้ายกันสำหรับความต้องการของเรา และวิธีที่สืบทอดมาจะเป็น "น้ำหนักตาย" ในชั้นเรียนของเรา

ความจริงที่ว่าเราสามารถสร้างคลาสในคลาสสืบทอดที่มีชื่อเดียวกันกับคลาสที่เราสืบทอดมาจากพาเรนต์นั้นเรียกว่าการแทนที่

ตัวอย่าง

ลองจินตนาการว่าเรามีโครงสร้างนี้:

ที่ด้านบนสุดของลำดับชั้นของชั้นเรียนคือชั้นเรียน สัตว์- สืบทอดมา 3 ชนชั้น คือ แมว, สุนัขและ วัว.

ชั้นเรียน "สัตว์" มีวิธีการ "เสียง" วิธีนี้จะแสดงข้อความ "เสียง" บนหน้าจอ โดยธรรมชาติแล้วทั้งสุนัขและแมวไม่พูดว่า "เสียง" :) พวกมันเห่าและร้องเหมียว ดังนั้น คุณจะต้องตั้งค่าวิธีการอื่นสำหรับคลาส แมว, สุนัขและ วัว- เพื่อให้แมวร้องเหมียว สุนัขเห่า และวัวก็พูดว่า "หมู"

ดังนั้นในคลาสที่สืบทอดมาเราจะแทนที่เมธอดนี้ เสียง()เพื่อให้เราได้รับคำว่า “เหมียว”, “วูฟ” และ “หมู” ในคอนโซล

  • โปรดทราบ: ก่อนวิธีที่เราจะแทนที่ เราจะเขียนว่า " @แทนที่" นี่เป็นการบอกคอมไพเลอร์ว่าเราต้องการแทนที่เมธอด

แล้วความหลากหลายคืออะไร

อย่างไรก็ตาม ความหลากหลายเป็นหลักการ ตัวอย่างที่แท้จริงทั้งหมดที่เราให้ไว้ข้างต้นเป็นเพียง วิธีการดำเนินการของความหลากหลาย

ลองดูคำจำกัดความที่เราให้ไว้ตอนต้นบทความอีกครั้ง:

ความแตกต่าง- ความสามารถในการใช้วิธีการชื่อเดียวกันกับชุดพารามิเตอร์ที่เหมือนกันหรือต่างกันในคลาสเดียวหรือในกลุ่มคลาสที่เกี่ยวข้องกันโดยความสัมพันธ์แบบสืบทอด

ดูชัดเจนขึ้นใช่ไหม? เราแสดงให้เห็นว่าคุณสามารถ:

  • สร้าง "วิธีการที่มีชื่อเดียวกัน" ในคลาสเดียว ("วิธีโอเวอร์โหลด")
  • หรือเปลี่ยนพฤติกรรมของเมธอดคลาสพาเรนต์ ("การแทนที่เมธอด")

ทั้งหมดนี้เป็นการแสดงให้เห็นถึง "ความยืดหยุ่นที่เพิ่มขึ้น" ของภาษาเชิงวัตถุเนื่องจากความหลากหลาย

เราหวังว่าบทความของเราจะเป็นประโยชน์กับคุณ คุณสามารถสมัครเรียนหลักสูตร Java ของเราได้เรามีต่อ

ความแตกต่างคือความสามารถของสารที่มีองค์ประกอบเดียวกันที่จะดำรงอยู่ได้ขึ้นอยู่กับสภาวะภายนอกในรูปแบบผลึกหลายรูปแบบ (การดัดแปลงโพลีมอร์ฟิก) ที่มีโครงสร้างต่างกัน (สำหรับสารธรรมดาปรากฏการณ์นี้บางครั้งเรียกว่า allotropy)

ปรากฏการณ์ของความหลากหลายนั้นถูกค้นพบครั้งแรกโดยนักเคมีและนักแร่วิทยาชาวเยอรมัน E. Mitscherlich ในปี 1821 ความหลากหลายนั้นแพร่หลายในธรรมชาติและเป็นหนึ่งในคุณสมบัติเฉพาะของสารที่เป็นผลึก การดัดแปลงแบบโพลีมอร์ฟิกซึ่งมีโครงสร้างภายในต่างกันจึงมีคุณสมบัติที่แตกต่างกัน ดังนั้นการศึกษาเรื่องความหลากหลายจึงมีความสำคัญอย่างยิ่งสำหรับการปฏิบัติ

ประการแรก เงื่อนไขภายนอกที่กำหนดความหลากหลาย ได้แก่ อุณหภูมิและความดัน ดังนั้น การดัดแปลงโพลีมอร์ฟิกแต่ละครั้งจึงมีช่วงอุณหภูมิและความดันของตัวเองซึ่งมีอยู่ในสถานะเสถียรทางอุณหพลศาสตร์ (สมดุล) และภายนอกซึ่งไม่สามารถเสถียรได้ แม้ว่า มันสามารถมีอยู่ใน metastable ได้เช่น สภาวะที่ไม่สมดุล

คาร์บอน ซิลิคอน ฟอสฟอรัส เหล็ก และองค์ประกอบอื่นๆ มีอยู่ในการดัดแปลงโพลีมอร์ฟิกต่างๆ คุณสมบัติทางกายภาพของการดัดแปลงสารเดียวกันอาจแตกต่างกันอย่างมีนัยสำคัญ ตัวอย่างเช่น การดัดแปลงคาร์บอนที่ตกผลึกในรูปของเพชร (ระบบลูกบาศก์) หรือในรูปของกราไฟท์ (ระบบหกเหลี่ยม) จะแตกต่างกันอย่างมากในคุณสมบัติทางกายภาพ แม้ว่าองค์ประกอบจะมีเอกลักษณ์เฉพาะตัวก็ตาม หากการเปลี่ยนแปลงแบบโพลีมอร์ฟิกมาพร้อมกับการเปลี่ยนแปลงโครงสร้างเล็กน้อย คุณสมบัติทางกายภาพของสารจะเปลี่ยนไปเล็กน้อย สารเฉพาะแต่ละชนิดต้องมีการดัดแปลงโพลีมอร์ฟิกสองหรือสามหรือมากกว่านั้น การปรับเปลี่ยนต่างๆ มักจะแสดงด้วยตัวอักษรกรีก α, β, γ ฯลฯ โดยตัวอักษรตัวแรกมักหมายถึงการดัดแปลงที่มีความเสถียรที่อุณหภูมิสูงขึ้น

เมื่อการดัดแปลงที่อุณหภูมิสูงถูกเปลี่ยนเป็นอุณหภูมิที่ต่ำกว่า โดยปกติแล้วรูปร่างภายนอกดั้งเดิมของผลึกจะยังคงอยู่ ในขณะที่โครงสร้างภายในของสารจะมีการเปลี่ยนแปลง การเก็บรักษารูปแบบภายนอกที่ไม่สอดคล้องกับโครงสร้างที่สร้างขึ้นใหม่ของโครงตาข่ายคริสตัลนี้เรียกว่าพารามอร์โฟซิส Paramorphoses เป็นที่รู้จักในธรรมชาติ β -ควอตซ์ (สมมาตรตรีโกณมิติ) ตาม α -ควอตซ์ (สมมาตรหกเหลี่ยม), แคลไซต์ CaCO 3 (สมมาตรตรีโกณมิติ) บนอาราโกไนต์ (สมมาตรออร์โธฮอมบิก) ฯลฯ

โดยไม่คำนึงถึงลักษณะของการเปลี่ยนแปลงโครงสร้างที่เกิดขึ้นระหว่างการเปลี่ยนแปลงแบบโพลีมอร์ฟิก มีสองประเภทที่แตกต่างกัน: การแปลงแบบ enantiotropic (ย้อนกลับได้) และการเปลี่ยนแปลงแบบ monotropic (ไม่สามารถย้อนกลับได้)

การเปลี่ยนแปลงแบบพลิกกลับได้ของการดัดแปลงหนึ่งไปเป็นอีกการเปลี่ยนแปลงหนึ่ง ดำเนินการที่ความดันคงที่และอุณหภูมิการเปลี่ยนแปลง (จุด) ที่แน่นอน ซึ่งการดัดแปลงเหล่านี้อยู่ในสภาวะสมดุล เช่น มีความเสถียรเท่ากัน เรียกว่า enantiotropic ซึ่งสามารถแสดงเป็นแผนผังได้ดังนี้:

α ↔ β↔ของเหลว

เหล่านั้น. การเปลี่ยนแปลง α → β คือ enantiotropic ตัวอย่างของการแปลงโพลีมอร์ฟิกแบบ enantiotropic คือการแปลงระหว่างรูปแบบโพลีมอร์ฟิกของ SiO 2 ˸

ความแตกต่าง--แนวคิดและประเภท การจำแนกประเภทและคุณสมบัติของหมวดหมู่ "Polymorphism" 2015, 2017-2018

  • - ความหลากหลายของบุคคล

    บุคคลซึ่งมีคุณสมบัติเหมือนกันหลายประการ ในเวลาเดียวกันก็ไม่เหมือนกันในแง่ของคุณสมบัติของสายพันธุ์ พวกเขาแตกต่างกันทั้งทางร่างกาย จิตใจ และสังคม ความแตกต่างดังกล่าวได้แก่ ความสูง สีผิวและสีผม รูปร่างหน้าตาของแต่ละบุคคล การเดิน... .


  • - การก่อกวนสนับสนุนการอนุรักษ์ประเภทที่รุนแรงและการกำจัดประเภทกลาง นำไปสู่การอนุรักษ์และเพิ่มประสิทธิภาพของความหลากหลาย

  • - ความแตกต่างเฉพาะของมนุษยชาติ เชื้อชาติเป็นการแสดงออกของความหลากหลายทางพันธุกรรมของมนุษยชาติ ความสามัคคีของมนุษยชาติ

    ความแตกต่างภายในสายพันธุ์ของมนุษยชาติ: นับตั้งแต่การถือกำเนิดของ H. sapiens สังคมในมนุษย์ได้กลายเป็นแก่นแท้ของเขา และวิวัฒนาการทางชีววิทยาก็เปลี่ยนไป โดยแสดงให้เห็นอย่างชัดเจนในการเกิดขึ้นของความหลากหลายทางพันธุกรรมในวงกว้าง ความหลากหลายทางพันธุกรรมในระดับ... .