This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
IMO you are right to compare Order with Itinerary and Segment with OrderLine.
I have been working with flight reservation applications for a long time and they are very different from the assignment... For example, what happens if the Customer wants to buy two tickets? Have you considered that?
From my understanding of the reservation use case, it is possible to do a reservation for 2 seats. I have toyed with this idea: Itiniary - Segment - Flight - Equipment - Seats Where the selected seat(s) is a list in segment. While the list of seats in equipment is the number of available seat (and seating classes) for that flight (these seats will not be marked as "taken", they just state the "lay out" of the equipment)
I think you are right in all your assuptions and I think that is a must to modify the cardinality when you extends the BDOM (segment 0..* - 1 flight ). If you assume that the segment - flight cardinality is 1..1 then you are saying "I flight only exists when a segment exists", in other words "A product exists only when an orderline exists".